У меня есть собственная таблица ссылок, как описано в документации доктрины (которая уже интенсивно используется во всем приложении и, следовательно, переход на вложенное дерево не является текущей опцией).
http://docs.doctrine -project.org / projects / doctrine-orm / ru / 2.0.x / reference / association-mapping.html # один-ко-многим-самоссылающимся
Структура таблицы выглядит следующим образом:
+----+----------+--------+
| id | parentID | Name |
+----+----------+--------+
| 1 | null | Name 1 |
| 2 | 1 | Name 2 |
| 3 | 1 | Name 3 |
| 4 | 2 | Name 4 |
| 5 | 1 | Name 5 |
--------------------------
До сих пор в наших формах мы использовали всю сущность, содержащую нашу форму, т.е.
$builder->add('hierarchyid', 'entity', array(
'class' => 'AcmeTestBundle:Hierarchies')
Что отлично работает, но теперь я хочу изменить это, чтобы установить точки в таблице, например что-то вроде:
->add('hierarchyid', 'entity', array(
'class' => 'AcmeTestBundle:HierarchiesTest',
'query_builder' => function(HierarchiesTestRepository $repo)
{return $repo->findBy??????}
Но я попал в ментальный блок, как это сделать, есть идеи?
Один из вариантов, который я рассмотрел, состоит в том, что у меня уже есть код, который создает коллекцию массивов этих сущностей, которая используется в другом месте, но я не знаю, как мне следует реализовать коллекцию массивов доктрин в типе формы.
private function createNodeArray($node)
{
$this->hierarchyArrayCollection->add($node);
foreach ($node->getChildren() as $hierarchy)
{
$this->createNodeArray($hierarchy);
}
}