0

我有两张桌子,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. 
4

3 回答 3

1

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

'srkParents' => array(self::HAS_ONE, 'SrkParents', 'studentID'),
于 2013-03-12T08:37:40.677 回答
0

你的关系srkParents是一种HAS_MANY关系。因此$data->srkParents是一个数组SrkParents不是一个对象。这是有道理的,因为您的学生有好几个家长。

我对你的模型属性知之甚少,所以我只能猜测:解决这个问题的一种方法是get在你的模型中添加一个 er,Students它会循环$this->srkParents查找父对象并从那里返回名称:

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

然后你可以$data->fatherName在你的网格视图中使用。

于 2013-03-12T12:50:29.017 回答
0

您的关系名称是学生,这是区分大小写的。

尝试更改$data->Students->fathers_name$data->student->fathers_name.

属性Students.Students未定义。

我究竟做错了什么?

  • 您试图从未定义Students的模型中获取字段。Students
于 2013-03-12T14:56:48.050 回答