You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定SQL转换为CakePHP 2.8控制器可正常运行的查询语句

CakePHP 2.8 对应查询正确写法

原生SQL中AND运算优先级高于OR,实际生效逻辑为匹配两个条件组的任意一个:

  • 组1:app_code = 'XuS5II' 且 acc_id = 89
  • 组2:app_code = 0 且 acc_id = 0

之前查询不生效的常见原因是没有做条件分组,把所有条件平铺后CakePHP会默认用AND拼接,导致逻辑错误。

控制器中可直接运行的代码如下:

// 如果当前控制器没有关联该模型,先执行加载:$this->loadModel('AdsPartnerWise');
$adPartnerWises = $this->AdsPartnerWise->find('all', array(
    'conditions' => array(
        'OR' => array(
            // 第一组匹配条件
            array(
                'app_code' => 'XuS5II',
                'acc_id' => 89
            ),
            // 第二组匹配条件
            array(
                'app_code' => 0,
                'acc_id' => 0
            )
        )
    )
));

注意不要把四个条件平铺在conditions下,也不要把OR下的条件和外层条件混写,否则会因为CakePHP默认的AND拼接规则,生成不符合预期的WHERE逻辑。

验证提示:如果需要确认生成的SQL是否符合预期,可以开启debug模式后查看SQL日志,或者调用$this->AdsPartnerWise->getDataSource()->getLog()打印执行的SQL语句核对。

内容的提问来源于stack exchange,提问作者chunara vivek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 19:15:46