2013-03-21 83 views
0

在Yii中,我擁有與某個位置相關的媒體;我有關係設置爲這樣:Yii返回加入模型的屬性

公共職能關係(){

return array(
     'users' => array(self::HAS_ONE, 'Users', array('id' => 'user_id')), 
     'locations' => array(self::HAS_ONE, 'Locations', array('id' => 'object_id'), 'together' => true, 'select' => '*') 
    ); 
} 

當我詢問,我用的是「與」語句聯接表。

$models = Media::model()->with('lodcation') -> findAll($criteria); 

然後我將數據放入一個json對象並將其作爲CJSON響應返回。

echo CJSON::encode($models); 

的問題是,正在返回的字段只能從父模型,這是媒體,而不是加盟的模式,地點。我的問題是如何在Yii中顯示父模型和加入的模型結果?

+0

var_dump($ models [0] - > locations);'return? (假設'('lodcation')'是你的問題中的一個錯字,你的意思是'('locations')';)) – Stu 2013-03-21 18:02:23

回答

2

你們的關係

'locations' => array(self::HAS_ONE, 'Locations', array('id' => 'object_id'), 'together' => true, 'select' => '*') 

的名稱爲'locations',但是當你嘗試在查詢中使用它你可以參考->with('lodcation'),它正在使findAll方法試圖從一個已經存在的關係中加載數據。將您的呼叫更改爲$models = Media::model()->with('locations') -> findAll($criteria); 應該可以解決此問題。

也許你正在使用的關係名稱在這裏發出一些噪音:'locations'作爲一個複數似乎是指一組位置。保持這個名字在單個'location'應該使self::HAS_ONE關係的含義更清楚。