Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Php Yii框架|同一表中的嵌套数组_Php_Arrays_Yii_Frameworks - Fatal编程技术网

Php Yii框架|同一表中的嵌套数组

Php Yii框架|同一表中的嵌套数组,php,arrays,yii,frameworks,Php,Arrays,Yii,Frameworks,使用CActiveRecord,我的桌子如下所示: 列parent_id与id有很多关系,并且工作正常 id | parent_id ---+---------- 1 1 <- top 2 1 <- means parent_id with 1 has parent with id=1 3 1 4 2 <- parent for is id=2 5 2 6 2 and so many nested le

使用CActiveRecord,我的桌子如下所示:

列parent_id与id有很多关系,并且工作正常

id | parent_id
---+----------
1    1      <- top
2    1      <- means parent_id with 1 has parent with id=1
3    1
4    2      <- parent for is id=2
5    2
6    2      and so many nested levels....
id |父| id
---+----------
1使用以下方法解决:

您需要从模型中获取数据作为数组:

$somemodel = MyModel::model()->findAll();
然后将所有对象放入数组,而不是Yii对象模型或您需要的:

foreach ($somemodel as $k => $v)
{
   $arrays[$k] = array('id' => $v->id, 'parent_id' => $v->parent_id, 'somedata' => 'Your data');
}
然后调用一个函数:

function buildTree(array $elements, $parentId = 0) {
    $branch = array();

    foreach ($elements as $element) {
        if ($element['parent_id'] == $parentId) {
            $children = buildTree($elements, $element['id']);
            if ($children) {
                $element['children'] = $children;
            }
            $branch[] = $element;
        }
    }

    return $branch;
}
然后调用将所有
$arrays
数据放入buildTree函数以重建嵌套数组数据

$tree = buildTree($arrays);
现在,
$tree
是嵌套数组数据


注意:函数没有深度,但您可以像下面的示例那样方便地添加:

Yii 1.1和Yii 2有一个嵌套的集合扩展?是否有人在同一个表格的嵌套层上尝试过有用的示例?@Marin Sagovac,请发布所有依赖GII生成的模型,我会帮助你。我相信,这将帮助你:干杯!