Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.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 如何在Yii2中显示带有子类别的类别_Php_Arrays_Yii2 - Fatal编程技术网

Php 如何在Yii2中显示带有子类别的类别

Php 如何在Yii2中显示带有子类别的类别,php,arrays,yii2,Php,Arrays,Yii2,我有一个以类别名称命名的表,其中包含id、parent\u id和title列。 默认的父项id为0,如果类别是子类别,则在父项id中输入父项id 我使用activerecord获取所有类别,使用这个$category=category::find()->asArray()->all(); 我的分类如下: $category = [ [ 'id' => 1, 'parent_id '=> 0, 'title' => 'o

我有一个以类别名称命名的表,其中包含id、parent\u id和title列。 默认的父项id为0,如果类别是子类别,则在父项id中输入父项id

我使用activerecord获取所有类别,使用这个
$category=category::find()->asArray()->all();
我的分类如下:

$category = [
    [
        'id' => 1,
        'parent_id '=> 0,
        'title' => 'one',
    ],
    [
        'id' => 2,
        'parent_id '=> 1,
        'title' => 'two',
    ],
    [
        'id' => 3,
        'parent_id '=> 1,
        'title' => 'three',
    ],
    [
        'id' => 4,
        'parent_id '=> 0,
        'title' => 'four',
    ],
    [
        'id' => 5,
        'parent_id '=> 0,
        'title' => 'five',
    ],

];
我想把它打印成:

<ul>
    <li>
        one
        <ul>
        <li>two</li>
        <li>three</li>
        </ul>
    </li>
    <li>four</li>
    <li>five</li>
</ul>
    • 两个

执行此操作的最佳方法是什么?

首先选择所有父项:

$category = Category::find()->with('childrens')->where(['parent_id'=>0])->all();
在类别模型中编写一个关系,如下所示:

public function getChildrens()
{
  return $this->hasMany(Category::className(), ['parent_id' => 'id'])>andOnCondition('parent_id!=:pid',[':pid' =>0]);;
}
更新您的视图:

<ul>

    <?php foreach($category as $cat)?>
        <li>
            <?=$cat->title?>
    <?php if($cat->childrens){?>

            <ul>
    <?php foreach($cat->childrens as $child){?>
              <li><?=$child->title?></li>

    <?php }?>
            </ul>
    <?php } ?>

        </li>
    <?php }?>


</ul>

您试过什么吗?