0

以下に示すようにモデルで検索を行っていますが、生成される 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)

ここで私が間違っていることについてのアイデア。迅速なヘルプをいただければ幸いです。ありがとう!

4

1 に答える 1

0

よくある PHP 初心者の間違い - 配列内のキーを複数回使用する:

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

それは読むべきです

    'OR' => array(
        array('Booking.payment_status' => 3),
        array('Booking.payment_status' => 2)
    )
于 2013-03-28T10:15:36.053 に答える