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 に答える