NewVision WEB-development Team Blog

Tag Archives: dql

Doctrine DQL и его хитрый Limit-subquery-алгоритм

Иногда DQL подкидывает замечательные сюрпризы в генерируемых SQL запросах. В такие моменты начинаешь жалеть, что не прочитал доки от корки до корки))

Doctrine_Query::whereIn c пустым массивом в качестве параметра

Если в update присутствует условие whereIn с пустым массивом в качестве параметра, то оно не учитывается при запросе.
Например, функция активации пользователей:
public function activateUsers(array $user_ids)
{
  Doctrine_Query::create()
    ->update("User u")
    ->set("u.is_active", 1)
    ->whereIn("u.id" , $user_ids)
    ->execute();
}
Если вызвать эту функцию с пустым массивом $user_ids, то проапдейтятся все записи из таблицы пользоватей (т.е. им проставиться is_active [...]