TemKa_SD 9 10/19/2020 07:38 PM Здравствуйте. Столкнулся с проблемой, подскажите пожалуйста как с этим работать. Если указывать 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
newbie 1,723 10/20/2020 10:47 AM Насколько я помню, $where должно быть array(array()) $where = []; $where[] = ['id=? OR id=?', $match->team1, $match->team2]; 1 Share this post Link to post
siv1987 2,629 10/20/2020 02:14 PM В запросе можно использовать одномерный массив, но тут нужен многомерный массив. Share this post Link to post
TemKa_SD 9 10/20/2020 05:55 PM 7 часов назад, newbie сказал: Насколько я помню, $where должно быть array(array()) Тот же самый результат. https://prnt.sc/v39gh9 Share this post Link to post
newbie 1,723 10/21/2020 04:20 AM А в исходном коде ID'шники игроков правильные? Share this post Link to post
TemKa_SD 9 10/21/2020 02:51 PM 10 часов назад, newbie сказал: А в исходном коде ID'шники игроков правильные? Неа, тут тоже с новой команды идет с 1 https://prnt.sc/v3wwiy Share this post Link to post
newbie 1,723 10/22/2020 03:57 AM - Посмотрите sql-запрос. - Проверьте с $where = []; $where[] = ['1=?', 1]; - Добавьте скобки $where = []; $where[] = ['(id=? OR id=?)', $match->team1, $match->team2]; Share this post Link to post
TemKa_SD 9 10/23/2020 03:08 AM @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