私はdoctrineのドキュメントで扱っている自己参照表を持っています(すでにアプリケーション全体で頻繁に使用されているため、ネストされたツリーへの変更は現在のオプションではありません)。symfony2隣接関係リストのモデルでのフォームの使用
テーブルの構造は次のようになります。
+----+----------+--------+
| 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??????}
しかし、私は精神的なブロックをどのようにこれを完了するには、任意のアイデアをヒットしましたか?
これらのエンティティの配列コレクションをビルドするコードは既に用意されていますが、これは別の場所で使用されていますが、フォームタイプでdoctrine配列コレクションを実装する方法についてはよくわかりません。
private function createNodeArray($node)
{
$this->hierarchyArrayCollection->add($node);
foreach ($node->getChildren() as $hierarchy)
{
$this->createNodeArray($hierarchy);
}
}
これは私の問題です。私はfinaAllByIdメソッドを再帰的に実行させ、オブジェクトを構築してから、query_builderに戻すことはできません。私はこれをフォームに戻す方法を理解できません。 find( '2')のように、通常のようにQueryBuilderを返すだけであれば、現在子を返さないでしょう。 プロパティの場合、私のエンティティはこれに対処するためにtoStringを使用しています。 – MadManMonty