Yii 1.15 CdbCriteria 添加自己的排序 - 魔法

Yii 1.15 CdbCriteria adds up own sorting - magic

碰巧 Yii 隐式地将 ID 排序添加到条件中。

注意代码中的这一行 $criteria->order ='t.id ASC';

我的源代码:

            $criteria = new CDbCriteria;

            $criteria->select = 't.id, order_id, was_before, became, t.created_at';

            $criteria->addCondition('t.created_at >= \'' . $from . '\'');
            $criteria->addCondition('t.created_at <= \'' . $to . '\'');
            $criteria->alias ='t';


            $criteria->with = [
               'order' => [
                  'select' => 'm.id as b, m.status',
                  'condition' => 'm.status = ' . Order::STATUS_CANCELLED,
                  'alias' => 'm',
                  'with' => [
                     'packerRest' => [
                        
                        'select'=> 'g.id as n',
                        'alias' => 'g'
                     ]
                  ]
               ],
            ];
            
            $criteria->order ='t.id ASC';

条件转储:

产生的错误:

如您所见,我没有添加按 ID 排序。 Yii 以某种方式完成并破坏了整个查询。

我已经准备好用纯 MySQL 重写它。

知道为什么会这样吗?

Yii 中,可以通过以下方式在模型的 relations() 方法中定义相关模型的顺序:'packerRest' => [self::HAS_MANY, 'PackerRest', 'order_id', 'order' => 'id DESC' ] 这就是你的 [=13] =] 模型.

PS:我们已经在问题的评论中解决了这个问题,但我发布这个答案只是为了我们采用 SO 格式,以便其他人更容易找到和阅读.