Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
TemKa_SD

where в \IPS\Helpers\Form\Node

Рекомендованные сообщения

Здравствуйте. Столкнулся с проблемой, подскажите пожалуйста как с этим работать.

Если указывать where, то id у children будет начинаться с начала root а не ID в базе данных как должно быть.

			$where = ['id=? OR id=?', $match->team1, $match->team2];


			$form->add( new \IPS\Helpers\Form\Node( 'fball_matches_event_form_player', $this->player ? (int) $this->player : 0, TRUE, array(
				'class'         => 'IPS\fball\Team',
				'subnodes'			=> TRUE,
				'where'				=> $where,
				'permissionCheck'	=> function( $node )
				{
					return ($node instanceof \IPS\fball\Team\Player);
				}
			), NULL, NULL, NULL, 'fball_matches_event_form_player' ) );

Мне нужно, чтобы в списке нод отображались игроки только двух команд, я это сделал, всё работает идеально.

Но при сохранении формы, ID игрока - это ID игрока конкретной команды, а не игрока из БД.

Вот я выбрал https://prnt.sc/v2kpwa игрока с ID в базе данных - 3.

Сохраняем форму, у нас ID - 1 https://prnt.sc/v2kr0w это первый игрок команды 2.

Если where убрать, всё работает как надо, но отображаются все команды и игроки.

Как быть?

-----

Если делать как сейчас, единственное что я тут вижу, в сохранении формы загружать команду 2 и там получать ID первого игрока.

Поделиться сообщением


Ссылка на сообщение

Насколько я помню, $where должно быть array(array())

			$where = [];
			$where[] = ['id=? OR id=?', $match->team1, $match->team2];

 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

В запросе можно использовать одномерный массив, но тут нужен многомерный массив.

Поделиться сообщением


Ссылка на сообщение
7 часов назад, newbie сказал:

Насколько я помню, $where должно быть array(array())

Тот же самый результат. https://prnt.sc/v39gh9

Поделиться сообщением


Ссылка на сообщение

А в исходном коде ID'шники игроков правильные?

 

Поделиться сообщением


Ссылка на сообщение
10 часов назад, newbie сказал:

А в исходном коде ID'шники игроков правильные?

 

Неа, тут тоже с новой команды идет с 1 https://prnt.sc/v3wwiy

Поделиться сообщением


Ссылка на сообщение

- Посмотрите sql-запрос.

- Проверьте с 

			$where = [];
			$where[] = ['1=?', 1];

- Добавьте скобки

			$where = [];
			$where[] = ['(id=? OR id=?)', $match->team1, $match->team2];

 

Поделиться сообщением


Ссылка на сообщение

@newbie Я тут еще разбираюсь с другим, как-то оно криво работает.

Если я указываю такой where, оно используется не только в выводе команд, но и игроков, т.е используется и для root и для child, мне надо только для root.

$where = [];
$where[] = ['id=?', 2];

https://prnt.sc/v503s8

			$form->add( new \IPS\Helpers\Form\Node( 'fball_matches_event_form_player', $this->player ? (int) $this->player : 0, TRUE, array(
				'class'         => 'IPS\fball\Team',
				'subnodes'			=> TRUE,
				'where'			=> $where,
				'permissionCheck'	=> function( $node )
				{
					return ($node instanceof \IPS\fball\Team\Player);
				}
			), NULL, NULL, NULL, 'fball_matches_event_form_player' ) );

 

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...