yii 如何在一个CGridView中显示两个模型

brccelvz  于 2022-11-09  发布在  其他
关注(0)|答案(3)|浏览(132)

我有两个表,1. Students2.SrkParents.
学生模型中关系是:

'srkParents' => array(self::HAS_MANY, 'SrkParents', 'studentID'),

SrkParents模型中关系为:

'student' => array(self::BELONGS_TO, 'Students', 'studentID'),

观点是,

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'students-grid',
'dataProvider'=>$dataProvider,
'filter'=>$model,
'columns'=>array('studentID','status','del',

array('name'=>'SrkParents.fathers_name',
'value'=>'$data->Students->fathers_name',
'type'=>'raw'),
array('class'=>'CButtonColumn',),),));

我不知道我在哪里做错了..我得到的错误如下所示,

Property "Students.Students" is not defined.
yb3bgrhw

yb3bgrhw1#

修改后的答案:只需将关系has_one从has_many更改为

'srkParents' => array(self::HAS_ONE, 'SrkParents', 'studentID'),
4xrmg8kj

4xrmg8kj2#

你的关系srkParentsHAS_MANY关系。因此$data->srkParentsSrkParents的一个数组,而不是一个对象。这是有意义的,因为你的学生有几个父母。
我对你的模型属性了解不够,所以我只能猜测:解决这个问题的一种方法是在Students模型中添加一个get er,它在$this->srkParents上循环,以找到父对象并从那里返回名称:

public function getFatherName()
{
    foreach($this->srkParents as $parent)
        if($parent->sex=='m' /* just guessing */)
            return $parent->name;
}

然后,您可以在网格视图中使用$data->fatherName

ppcbkaq5

ppcbkaq53#

您的关系名是student,这是区分大小写的。
请尝试将$data->Students->fathers_name更改为$data->student->fathers_name
未定义属性Students.Students
我做错了什么?

  • 您尝试从未定义的模型Students中获取字段Students

相关问题