Доктрина: Как сделать ОБНОВЛЕНИЕ с подзапросом SELECT MIN? - PullRequest
4 голосов
/ 08 марта 2010

У меня есть таблица фотографий, где пользователи могут иметь несколько фотографий.

Я пытаюсь создать следующий запрос:

$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 для конкретной фотографии этого пользователя, для которой добавлена ​​минимальная дата (самая ранняя фотография).

Я просто не могу понять синтаксис правильно. Может ли кто-нибудь указать мне правильное направление?

Спасибо.

EDIT:

Кажется, я пытаюсь сделать что-то, что не может быть сделано согласно ответу на этот вопрос ( MySQL Error 1093 - Невозможно указать таблицу назначения для обновления в предложении FROM ). Этот вопрос можно закрыть.

1 Ответ

2 голосов
/ 20 февраля 2011

Попробуйте это:

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