У меня есть две сущности: Категория и Подкатегория. Одна категория содержит 0 или несколько подкатегорий. Они связаны отношением "многие к одному". Я не представляю, как я могу сделать форму с подкатегориями, сгруппированными по категориям, вот так:
CATEGORY 1 :
- SubCategory 1
- SubCategory 2
CATEGORY 2:
- SubCategory 1
- SubCategory 2
Моя актуальная форма:
class CategorieType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('sous_categories', CollectionType::class, array(
'entry_type' => SousCategorie::class,
'entry_options' => array('label' => false),
))
;
}
Спасибо за вашу помощь
У меня есть юридическая компания, которая связана с подкатегорией отношением "многие ко многим", поэтому я хочу добавить подкатегории к компании.
Используйте EntityType с опцией group_by symfony.com/doc/current/reference/forms/types/…
Спасибо, вдруг получаю свои категории, но как парсер в веточке отображать подкатегории?

Я делаю это в своей форме, я получаю подкатегории. Как показать их сгруппированными в поле по категориям?
$builder
->add('sous_categories', EntityType::class, array(
'class' => 'AppBundle:Bdd\SousCategorie',
'query_builder' => function(EntityRepository $er) use ($revue) {
return $er->createQueryBuilder('sc')
->addSelect('sc')
->join('sc.Categorie', 'c')
->andWhere('c.Revue = :Revue')
->setParameter('Revue', $revue)
->orderBy('c.libelle', 'ASC')
->addOrderBy('sc.libelle', 'ASC')
;
},
'choice_label' => function($sousCategorie){
return $sousCategorie->getCategorie()->getLibelle()." - ".$sousCategorie->getLibelle();
},
'multiple' => true,
'expanded' => true,
))
;
Вы можете использовать groupBy в своей функции репозитория:
$builder
->add('sous_categories', EntityType::class, array(
'class' => 'AppBundle:Bdd\SousCategorie',
'query_builder' => function(EntityRepository $er) use ($revue) {
return $er->createQueryBuilder('sc')
->addSelect('sc')
->join('sc.Categorie', 'c')
->andWhere('c.Revue = :Revue')
->setParameter('Revue', $revue)
->orderBy('c.libelle', 'ASC')
->addOrderBy('sc.libelle', 'ASC')
->groupBy('sc.Categorie')
;
},
'choice_label' => function($sousCategorie){
return $sousCategorie->getCategorie()->getLibelle()." - ".$sousCategorie->getLibelle();
},
'multiple' => true,
'expanded' => true,
))
;
Привет, Антуан, я пробовал это, но теперь я получаю эту ошибку от mysql: SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1055 Выражение № 1 списка SELECT не входит в предложение GROUP BY и содержит неагрегированный столбец fitadata.b0_.id который функционально не зависит от столбцов в предложении GROUP BY; это несовместимо с sql_mode = only_full_group_by
J'ai réussi en desactivant le mode only_full_group_by (cipherbliss.com/…) mais par contre après comment afficher tout ca correctement dans twig?
Не могли бы вы подробнее рассказать, что вы хотите делать со своей формой? Это POST, PUT, вы просто хотите связать объекты?