我有两张表,1. Students
2.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.
答案 0 :(得分:1)
修改后的答案:只需更改has_many
中的关系has_one即可'srkParents' => array(self::HAS_ONE, 'SrkParents', 'studentID'),
答案 1 :(得分:0)
您的关系srkParents
是HAS_MANY
关系。因此,$data->srkParents
是SrkParents
的数组,而不是对象。这是有道理的,因为你的学生有几个父母。
我对你的模型属性知之甚少,所以我只能猜测:解决这个问题的一种方法是在get
模型中添加一个Students
的循环{{1}找到父对象并从那里返回名称:
$this->srkParents
然后您可以在网格视图中使用public function getFatherName()
{
foreach($this->srkParents as $parent)
if($parent->sex=='m' /* just guessing */)
return $parent->name;
}
。
答案 2 :(得分:0)
您的关系名称是学生,这是案例性的。
尝试将$data->Students->fathers_name
更改为$data->student->fathers_name
。
未定义属性Students.Students
。
我做错了什么?
Students
获取字段Students
。