2012-04-05 84 views
1

我遇到了Yii關係問題。我正在使用CGridView在視圖中顯示錶格。Yii relations issue

我在我的模型如下關係:

'relationName' => array(self::BELONGS_TO, OtherModelName, link_id),

當我打電話,我CGridView像它下面的例子中,值正常工作:

'relationName.field_name',

當我嘗試以下面的示例調用數組內的值:

array('header'=>'tableHeaderName', 'value'=>'$data->relationName->field_name'),

我的頁面失敗,我得到以下錯誤:Trying to get property of non-object

任何意見或建議?非常感謝你的幫助。

+0

您是否在呈現GridView之前預先使用'relationName'(使用'with')?你確定相關的對象不是空的(是link_id不爲空)? – DCoder 2012-04-05 19:26:20

+0

如果我的答案有幫助,我會感激贊成票,thx! – acorncom 2012-04-09 13:01:57

+1

感謝acorncom做了詭計 – bjtilley 2012-04-09 13:44:39

回答

1

我最近遇到了這個問題。你需要像這樣的東西:

array(
    'header'=>'tableHeaderName', 
    'value'=>'(isset($data->relationName)) ? $data->relationName->field_name : null', 
) 

如果關係並不總是存在,那麼Yii會發生什麼。所以如果你的數據/關係存在任何差距,那麼你遇到了問題。

+0

在這種情況下,您會期望_Yii_做什麼以避免「嚇壞」標籤?如果您嘗試從空對象讀取數據,任何編程語言都會「嚇壞」。 – DCoder 2012-04-06 12:42:07

+0

不是Yii的批評,只是解釋他爲什麼看到他所看到的東西 – acorncom 2012-04-06 14:32:46

0

檢查您的relationName與您的任何數據庫表是否有相同的名稱。