【问题标题】:Yii 1.15 CdbCriteria adds up own sorting - magicYii 1.15 CdbCriteria 增加了自己的排序 - 魔术
【发布时间】:2015-11-26 11:46:25
【问题描述】:

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 重写它。

任何想法为什么会这样?

【问题讨论】:

  • 也许您与orderpackerRest 模特有关系?
  • 是的,你说得对,这就是我在订单模型中的内容:'packerRest' => [self::HAS_MANY, 'PackerRest', 'order_id', 'order' => 'id DESC '],:.如果您提供答案,我会接受它
  • 谢谢!我很高兴能帮上忙!干杯

标签: php yii sql-order-by yii-cactiverecord


【解决方案1】:

Yii 中,可以在模型的relations() 方法中定义相关模型的排序,方法如下:'packerRest' =&gt; [self::HAS_MANY, 'PackerRest', 'order_id', 'order' =&gt; 'id DESC' ],这就是你的Order 模型中的内容。

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

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多