Опубликовано: 19 октября 20205 г Здравствуйте. Столкнулся с проблемой, подскажите пожалуйста как с этим работать. Если указывать 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 первого игрока.
Опубликовано: 20 октября 20205 г Насколько я помню, $where должно быть array(array()) $where = []; $where[] = ['id=? OR id=?', $match->team1, $match->team2];
Опубликовано: 20 октября 20205 г В запросе можно использовать одномерный массив, но тут нужен многомерный массив.
Опубликовано: 20 октября 20205 г Автор 7 часов назад, newbie сказал: Насколько я помню, $where должно быть array(array()) Тот же самый результат. https://prnt.sc/v39gh9
Опубликовано: 21 октября 20205 г Автор 10 часов назад, newbie сказал: А в исходном коде ID'шники игроков правильные? Неа, тут тоже с новой команды идет с 1 https://prnt.sc/v3wwiy
Опубликовано: 22 октября 20205 г - Посмотрите sql-запрос. - Проверьте с $where = []; $where[] = ['1=?', 1]; - Добавьте скобки $where = []; $where[] = ['(id=? OR id=?)', $match->team1, $match->team2];
Опубликовано: 23 октября 20205 г Автор @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' ) );
Здравствуйте. Столкнулся с проблемой, подскажите пожалуйста как с этим работать.
Если указывать where, то id у children будет начинаться с начала root а не ID в базе данных как должно быть.
Мне нужно, чтобы в списке нод отображались игроки только двух команд, я это сделал, всё работает идеально.
Но при сохранении формы, ID игрока - это ID игрока конкретной команды, а не игрока из БД.
Вот я выбрал https://prnt.sc/v2kpwa игрока с ID в базе данных - 3.
Сохраняем форму, у нас ID - 1 https://prnt.sc/v2kr0w это первый игрок команды 2.
Если where убрать, всё работает как надо, но отображаются все команды и игроки.
Как быть?
-----
Если делать как сейчас, единственное что я тут вижу, в сохранении формы загружать команду 2 и там получать ID первого игрока.