我有一個自我引用表在覆蓋的教義文檔(它已經在整個應用程序中大量使用,因此改變爲嵌套樹不是當前選項)。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??????}
但我打了一個心理塊如何完成這一點,任何想法?
我考慮過的一個選項是我已經有了構建這些實體的數組集合的代碼,這些實體在其他地方使用,但我不熟悉如何在窗體類型中實現一個教條arraycollection。
private function createNodeArray($node)
{
$this->hierarchyArrayCollection->add($node);
foreach ($node->getChildren() as $hierarchy)
{
$this->createNodeArray($hierarchy);
}
}
這就是我的問題。我可以使我的finaAllById方法遞歸執行,構建對象,然後不能傳回給query_builder。我無法弄清楚如何推回到形式。如果我只是返回一個QueryBuilder,按照常規方式(例如find('2')),我現在不會返回子項。 至於財產,我的實體正在使用toString來處理這個。 – MadManMonty 2012-03-23 10:22:44