我有这个对象模型与变量
的'has_many'关系public function relations()
{
return array(
'variables' => array(self::HAS_MANY, 'Variables', 'variable_id')
);
}
现在我想使用变量来排序我的数据,如
$criteria->with = array('variables');
$criteria->order = 'variables.id DESC';
但它不起作用。
有没有办法做这样的事情?感谢。
答案 0 :(得分:3)
如果需要,您可以直接与订单定义关系,在这种情况下,您可以这样做。
public function relations()
{
return array(
'variables' => array(self::HAS_MANY, 'Variables', 'object_id', 'order'=>'variables.id DESC')
);
}
你写的内容不起作用,因为你有1对多的关系。标准将运行2个查询,1个用于获取主记录,第二个用于获取关系。这就是为什么你的订单不起作用的原因。 如果你希望它像你说的那样工作,你应该做一个 - >加入而不是 - > with。 2之间有很大的不同,所以要注意你如何编写标准。
答案 1 :(得分:0)
我认为问题在于外键绑定,如果要在对象表(对象模型)中添加一个关系,其中有许多变量将object_id作为变量表中的外键(变量模型),那么您需要定义如下关系:
public function relations()
{
return array(
'variables' => array(self::HAS_MANY, 'Variables', 'object_id') // check the change in foreign key column
);
}