Yii 按关系检索CGridView中的数据值

Yii 按关系检索CGridView中的数据值,yii,Yii,关系: public function relations() { return array( 'submissionStatus' => array(self::HAS_ONE, 'SubmissionStatus', 'submission_status_id'), ); } GridView中的列值: 'value' => '$data->submissionStatus->submission_status_name', Sub

关系:

public function relations() {
    return array(
        'submissionStatus' => array(self::HAS_ONE, 'SubmissionStatus', 'submission_status_id'),
    );
}
GridView中的列值:

'value' => '$data->submissionStatus->submission_status_name',
SubmissionStatus模型属性:

public function attributeLabels() {
    return array(
        'submission_status_id'   => 'Status ID',
        'submission_status_name' => 'Status Name',
    );
}
提交状态关系:

public function relations() {
    return array(
        'submissionStatus' => array( self::BELONGS_TO, 'Submission', 'submission_status_id' ),
    );
}
但我有一个错误:

正在尝试获取非对象的属性

为什么我不能通过此关系检索提交\u状态\u名称

编辑:

另一方面,这一点非常有效:

'submissionStatus' => array(self::BELONGS_TO, 'SubmissionStatus', 'submission_status')
数据库:

| tbl_submission                  |
-----------------------------------
| submission_id (int) PK          |
| submission_name (varchar)       |
| submission_status_id (int) FK   | 


| tbl_submission_status            |
------------------------------------
| submission_status_id (int) PK    |
| submission_status_name (varchar) |

如果关系字段的值为空,则关系将不会返回外部模型的对象;因此,在其中调用属性将导致错误 试着改变

'value' => '$data->submissionStatus->submission_status_name',


这里只有两个问题

如果你的关系真的有效 在gridview中获取数据很热 我认为你在房地产交易中犯了一个错误。“属于”和“拥有”的区别在于,它试图以不同的方式创造不动产。你可以发布你的数据库表,它们有哪些字段,我们需要看看什么是键和外来的jey字段。 我猜在一个表中是id,在另一个表中是submission\u status\u id。 尝试改变这两种关系中的一种,如果其中一种有效,则尝试:

一,

“submissionStatus”=>arrayself::有一个“submissionStatus”,数组“submissionStatus”=>id

“submissionStatus”=>arrayself::有一个“submissionStatus”,数组“id”=>

二,

在您的网格中,您使用的代码是正确的,但正如@manquery的注释所述,如果关系返回null,它将不起作用。 但您可以在GridViw中尝试更具Yii风格的样式,如下所示: 不要只给出名称而给出任何值


“名称”=>“>提交状态。提交状态\u名称”

如何获取提交状态\u名称?在gridview中,作为列式数据库结构之一的值
'value' => '(isset($data->submissionStatus))?
            $data->submissionStatus->submission_status_name:""',