0


我一直在尝试为 Zend_Db_Table 中的特定用户选择发送/接收的最新消息。我的查询在 MySQL 中运行良好,但是当我尝试使用 joinLeft 执行此操作时,它会出错。

Zend_Db_Table 中的查询代码:

$select=$this->select()
->setIntegrityCheck(false)
->from(array('m1'=>'messages'))
->joinLeft(array('m2'=>'messages'), 'm1.from_id=m2.from_id AND m1.date_created < m2.date_created')
->where('m2.date_created IS NULL')
->where('m1.from_id=? OR m1.to_id=?', $to)
->order('m1.date_created DESC');

问题在于 joinLeft() 中的附加条件。如果我将 '<' 替换为 '=',则不会出错,但这不是目的。任何帮助将不胜感激。

4

1 回答 1

0

将代码“ ... AND m1.date_created < m2.date_created”放在新行中,如下所示

$select=$this->select()
->setIntegrityCheck(false)
->from(array('m1'=>'messages'))
->joinLeft(array('m2'=>'messages'), 'm1.from_id=m2.from_id')
->where('m1.date_created < m2.date_created')
->where('m2.date_created IS NULL')
->where('m1.from_id=? OR m1.to_id=?', $to)
->order('m1.date_created DESC');
于 2012-06-18T08:40:11.367 回答