Yii由另一个具有has_many关系的表命令

时间:2014-02-26 02:25:34

标签: yii has-many

我有这个对象模型与变量

的'has_many'关系
public function relations()
{
    return array(
        'variables' => array(self::HAS_MANY, 'Variables', 'variable_id')
    );
}

现在我想使用变量来排序我的数据,如

$criteria->with = array('variables');

$criteria->order = 'variables.id DESC';

但它不起作用。

有没有办法做这样的事情?感谢。

2 个答案:

答案 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
    );
}