Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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];

 

Опубликовано:

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

Опубликовано:
  • Автор
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

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.