Doctrine:如何使用SELECT MIN子查询进行更新?

时间:2010-03-08 17:30:53

标签: select doctrine subquery

我有一张用户可以拥有多张照片的照片表。

我正在尝试创建以下查询:

$q = Doctrine_Query::create()
   ->update('Photo p')
   ->set('p.photo_type', 1)
   ->where('p.user_id = ?', $id)
   ->andWhere('p.date_added = (SELECT MIN(p.date_added) FROM Photo p WHERE p.user_id = ?)', $id)

我们的想法是将“photo_type”设置为1,以便为此用户添加最少日期的照片(最早的照片)。

我似乎无法正确使用语法。有人能指出我正确的方向吗?

谢谢。

修改

根据这个问题的答案(MySQL Error 1093 - Can't specify target table for update in FROM clause),我似乎正在尝试做一些无法做到的事情。这个问题可以关闭。

1 个答案:

答案 0 :(得分:2)

试试这个:

$q = Doctrine_Query::create()
   ->update('Photo p')
   ->set('p.photo_type', 1)
   ->where('p.user_id = ?', $id)
   ->orderBy('p.date_added', 'desc')
   ->limit(1);