Использовать отношение ManyToOne как множественный выбор в форме Symfony (с доктриной)
Скажем, существует простое соотношение "многие к одному": модель имеет тип волос и цвет глаз:
/**
* @ORMEntity
*/
class Model
{
/**
* @ORMManyToOne(targetEntity="Hair")
* @ORMJoinColumn(name="hair_id", referencedColumnName="id")
*/
protected $hair;
/**
* @ORMManyToOne(targetEntity="Eyes")
* @ORMJoinColumn(name="eyes_id", referencedColumnName="id")
*/
protected $eyes;
Например, волосы могут быть: светлые, каштановые, черные, рыжие;
Глаз: голубой, зеленый, серый, коричневый.
В форме поиска я хочу, чтобы пользователь мог выбрать несколько типов волос и глаз одновременно. Я использую свойство' multiple':
class ModelType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('hair', EntityType::class, [
'class' => 'AppBundle:Hair',
'choice_label' => 'name',
'multiple' => true,
])
->add('eyes', EntityType::class, [
'class' => 'AppBundle:Eyes',
'choice_label' => 'name',
'multiple' => true,
])
->getForm();
;
}
Форма выглядит следующим образом:
Конечно, при выборе нескольких значений и отправке это вызывает Ошибка:
Expected argument of type "AppBundleEntityHair", "DoctrineCommonCollectionsArrayCollection" given
Может быть, это не для использования в таком случае?
Есть ли какие-либо рекомендации по созданию форм поиска в Symfony? Но ничего не нашел...