Php 如何在Yii2中显示带有子类别的类别
我有一个以类别名称命名的表,其中包含id、parent\u id和title列。 默认的父项id为0,如果类别是子类别,则在父项id中输入父项id 我使用activerecord获取所有类别,使用这个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
$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>
-
您试过什么吗?