Я бегу Symfony 3,4 LTS. Среди моих сущностей я получаю:
В ProductEntity:
/**
* @var array
*
* @ORM\Column(name="experts", type="simple_array")
*/
private $experts;
/**
* Set groupexperts
*
* @param array $groupexperts
*
* @return Product
*/
public function setGroupexperts($groupexperts)
{
$this->groupexperts = $groupexperts;
return $this;
}
/**
* Get groupexperts
*
* @return array
*/
public function getGroupexperts()
{
return $this->groupexperts;
}
Например, столбец experts
в базе данных может быть [2,7,9], где № 2, № 7 и № 9 и идентификаторы пользователей считаются экспертами для соответствующего продукта. В моей ProductForm:
$builder->add('experts', EntityType::class, array(
'class' => 'AppBundle:User',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.username', 'ASC')
->andWhere('u.active = 1')
},
'choice_label' => function($user) {
return $user->getFirstname();
}
));
Я не хочу создавать отношения ManyToMany, потому что я не хочу другую таблицу SQL. Форма хорошо отображается в интерфейсе, и посетители могут выбрать одного или нескольких пользователей в списке HTML. НО пользователи # 2, # 7 и # 9 по умолчанию не выбраны .
Сгенерированный список select
выглядит хорошо с хорошим ID:
<select>
<option value="1">John</option>
<option value="2">Matthew</option>
<option value="3">Brad</option>
<option value="4">Georges</option>
<option value="5">Luke</option>
...
</select>
Как сделать отображение между списком пользователей (сгенерированным createQueryBuilder()
) и массивом идентификаторов пользователей, хранящимся в базе данных?