Как я могу отобразить элементы в элементе управления EntityType следующим образом:
Group 1
parent
- child
-- second_child
- child
- child
-- second_child
Group 2
parent
- child
-- second_child
------third_child
parent
- child
У меня есть таблица, которая имеет отношение к себе, у этой сущности есть родительское поле, которое определяет родительские и дочерние поля для следующих дочерних элементов, поле уровня, которое определяет глубину вложения.
Я попытался вручную заполнить массив элементами такой структуры, но он не записал в базу данных:
$data = [];
$data = ['Group 1']['parent'] = $entityElement;
$data = ['Group 1']['- child'] = $entityElement->getChildren()[0];
$data = ['Group 1']['-- second_child'] = $entityElement->getChildren()[1];
->add('elements', ChoiceType::class, [
'mapped' => false,
'expanded' => false,
'multiple' => true,
'choices' => $options['elements'],
'placeholder' => false,
])
Я попытался создать запрос для этого, но он не работает, элементы перепутаны, даже когда я добавляю addOrderBy ('c.parent')
->add('elements', EntityType::class, [
'class' => Category::class,
'choice_label' => function($item) { return $item->getIndentName(); },
'expanded' => false,
'multiple' => true,
'query_builder' => function (ElementRepository $er) {
return $er->createQueryBuilder('e')->groupBy('e.parent');
},
'group_by' => function ($choiceValue) {
if (is_null($choiceValue->getBrand())) {
return '';
}
return $choiceValue->getBrand()->getName();
},
])
Как мне это сделать?