我有一个具有以下结构的数据库表
id title parent_id is_parent
parent_id是父元素的id,我添加了is_parent作为布尔值,以显示父元素。
我想从此数据库中提取一个树视图,并将其显示在下拉列表中。下面是我要查找的内容:
level1
level2
child1
child2
level2_2
child1
child2
level1_2
...
现在,如果在我的模型中只有两个级别(父级和子级),我可以这样做:
public function relations()
{
return array(
'getparent' => array(self::BELONGS_TO, 'Region', 'parent_id'),
'childs' => array(self::HAS_MANY, 'Region', 'parent_id', 'order' => 'title ASC'),
);
}
并且在视图中:
<?php echo $form->dropDownListRow($model,'region',CHtml::listData(Region::model()->findAll('is_parent=0'),'id', 'title','getparent.title'),array('prompt'=>'Choose')); ?>
我不知道如何更改模型中的关系或更改listData结构,以获得我想要的结果。
2条答案
按热度按时间mctunoxg1#
Optgroup(在下拉列表中)不能嵌套,所以你必须放弃组。只需创建你自己的$model::getList()函数。
我认为你不应该使用'is_parent','parent_id'就足够了。getList()看起来像这样:
它是递归的,当你不带参数调用它的时候--你从
parent_id=0
开始,得到所有的树。如果需要缩进,请在此函数中使用附加参数进行设置(并在每一级增加缩进)
r1wp621o2#