2013-03-21 88 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关系的含义更清楚。