Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cakephp模型与同一表的关联/联接_Php_Cakephp_Cakephp Model - Fatal编程技术网

cakephp模型与同一表的关联/联接

cakephp模型与同一表的关联/联接,php,cakephp,cakephp-model,Php,Cakephp,Cakephp Model,我有一张桌子,里面有父母和孩子。我希望能够构建模型,使其返回父母及其子女,即它与自身关联 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 WHE

我有一张桌子,里面有父母和孩子。我希望能够构建模型,使其返回父母及其子女,即它与自身关联

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  
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 find('threaded')。这实际上使您的解决方案变得多余。嗯,是的,这可能是解决您的问题的更优雅的解决方案-我不想建议它或树行为,因为我自己并没有真正使用它们。不过我得找个时间自己调查一下!感谢grt的回答,但是如何在选择框中填入所有要选择的父id?i、 e.如果是气体组(a、b、c),那么在添加记录时如何使选择框像这样
abc