【问题标题】:cakephp model association/join with same table [closed]cakephp模型关联/加入同一张表[关闭]
【发布时间】:2011-03-14 21:40:27
【问题描述】:

我有一个包含父母和孩子的表格。我希望能够构建模型,以便它返回父母和他们的孩子,即它与自身相关联。

ID Name ParentID
1  Parent  0
2  Child1  1
3  Child2  1
4  Parent2 0
5  Child3  4

我使用下面的 SQL

SELECT
 grp2.id,
 grp2.name
FROM wp_bp_groups grp1
LEFT JOIN wp_bp_groups grp2
 ON grp2.parent_id = grp1.id
WHERE grp1.id = '$parent_id'
ORDER BY grp2.name

【问题讨论】:

    标签: php cakephp cakephp-model


    【解决方案1】:

    你可以试试这样的:

    <?php  
    class Group extends AppModel { 
    
     var $name = 'Group'; 
    
     var $belongsTo = array( 
            'ParentGroup' => 
                array('className' => 'Group', 
                      'foreignKey' => 'parent_id' 
            ), 
         ); 
    
     var $hasMany = array( 
        'ChildGroup' => 
                array('className' => 'Group', 
                      'foreignKey' => 'parent_id' 
                ), 
        ); 
    } 
    ?>
    

    【讨论】:

    • 谢谢!如果我想以更好的结构化方式返回组怎么办,比如树层次结构。下面的答案提到了树的行为,但是如果我不想更改架构怎么办。我想模仿树的行为。现在它返回所有组,包括具有空子组数组的子组。我在考虑可能在模型中重建数组,但有更好的方法吗?
    • 找到 find('thread')。这实际上使您的解决方案变得多余。
    • 嗯,是的,这可能是解决您的问题的更优雅的解决方案 - 不想建议它或 Tree 行为,因为我自己并没有真正使用过它们。不过有时必须自己调查一下!
    • 感谢您的回答
    • 但是如何用所有 parent_id 填充选择框以供选择?即如果组气体(a,b,c)那么添加记录时如何制作这样的选择框&lt;select name="parent_id"&gt;&lt;option value="a"&gt;a&lt;/option&gt;&lt;option value="b"&gt;b&lt;/option&gt;&lt;option value="c"&gt;c&lt;/option&gt;&lt;/select&gt;
    【解决方案2】:

    您正在寻找Tree behaviour,它可以轻松管理hierarchical data

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多