我有一个具有以下结构的表:
类别
- 标识符
- 姓名
- 父标识
我想得到一个功能单一的分类树,我在我的模型中写了类似的东西,但是它不起作用。
public function getChildren($parent) {
$criteria = new CDbCriteria;
$criteria->condition='parent_id=:id';
$criteria->params=array(':id'=>$parent);
$model = Term::model()->findAll($criteria);
while ($model) {
echo $model->id . "<br />";
$this->getChildren;
}
}
有人能帮我吗?谢谢。
4条答案
按热度按时间nhaq1z211#
我终于解决了这个问题。如果有人感兴趣,这里的代码:
1wnzp6jl2#
这是一个更好的解决方案。每个级别只有一个查询。其他解决方案使用每个子级的查询或查询所有记录(如果数量较少,则效果较好)
lvmkulzt3#
您可以在模型中使用一个递归函数来实现,如下所示:
并在控制器中将其用作:
mbyulnm04#
可能是这一个帮助你...:)
我正在为类别yii2复制我的控制器类