【发布时间】:2014-01-09 06:50:37
【问题描述】:
我需要将 mysql 查询转换为推进标准,
$subSelect = " SELECT * FROM " . NotificationqueuePeer::TABLE_NAME .
" where " . NotificationqueuePeer::ITNOTIFICATIONQUEUESTATUS . " = " . Notificationqueue :: STATUS_UNSENT .
" OR " . NotificationqueuePeer::ITNOTIFICATIONQUEUESTATUS . " = " . Notificationqueue :: STATUS_TRIED .
" LIMIT 5 FOR UPDATE ";
我尝试将上面的 SQL 转换为类似的推进方式
$crit= new Criteria();
$crit->add(NotificationqueuePeer::ITNOTIFICATIONQUEUESTATUS, Notificationqueue :: STATUS_UNSENT);
$crit->addOr(NotificationqueuePeer::ITNOTIFICATIONQUEUESTATUS, Notificationqueue :: STATUS_TRIED);
$crit->setLimit(5);
$crit->add(' FOR UPDATE ', Criteria::CUSTOM);
$notifications = NotificationqueuePeer::doSelectRS($crit);
echo '<pre>';
print_r($notifications);
当我打印时,查询是:
SELECT column1, column2,..., FOR UPDATE WHERE AND (NOTIFICATIONQUEUE.ITNOTIFICATIONQUEUESTATUS=1
OR NOTIFICATIONQUEUE.ITNOTIFICATIONQUEUESTATUS=3) LIMIT 5
如您所见,FOR UPDATE 位置错误,应将其附加在末尾。
谢谢
【问题讨论】: