【问题标题】:Cakephp find query issueCakephp 查找查询问题
【发布时间】:2013-03-28 10:10:32
【问题描述】:

我正在对如下所示的模型进行查找,但是生成的 SQL 是错误的,因此我得到了不正确的结果。

$bookings = $this->Booking->find('all', array(
    'conditions' => array(
        'Booking.created BETWEEN ? AND ?' => array(
            date('Y-m-d H:i:s', strtotime('-24 hours')),
            date('Y-m-d H:i:s', strtotime('-12 hours'))
        ),
        'OR' => array(
            'Booking.payment_status' => 3,
            'Booking.payment_status' => 2
        )
    )
));

此查找生成的 WHERE 条件是(如 cake debugkit 所示)

WHERE `Booking`.`created` BETWEEN '2013-03-27 11:01:57' AND '2013-03-27 23:01:57' AND `Booking`.`payment_status` = 2

我试图创建的 where 条件是

WHERE `Booking`.`created` BETWEEN '2013-03-27 11:01:57' AND '2013-03-27 23:01:57' AND (`Booking`.`payment_status` = 2 OR `Booking`.`payment_status` = 3)

任何想法我在这里做错了什么。快速帮助将不胜感激。谢谢!

【问题讨论】:

    标签: cakephp model cakephp-2.1


    【解决方案1】:

    一个 PHP 初学者经常犯的错误——在数组中多次使用一个键:

        'OR' => array(
            'Booking.payment_status' => 3,
            'Booking.payment_status' => 2
        )
    

    它应该是

        'OR' => array(
            array('Booking.payment_status' => 3),
            array('Booking.payment_status' => 2)
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 2013-04-14
      相关资源
      最近更新 更多