Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
TemKa_SD

where в \IPS\Helpers\Form\Node

Recommended Posts

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

Если указывать 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 первого игрока.

Share this post


Link to post
Share on other sites

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

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

 

  • Upvote 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
7 часов назад, newbie сказал:

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

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

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites
10 часов назад, newbie сказал:

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

 

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

Share this post


Link to post
Share on other sites

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

- Проверьте с 

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

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

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

 

Share this post


Link to post
Share on other sites

@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' ) );

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...