Doctrine DQL и его хитрый Limit-subquery-алгоритм
Иногда DQL подкидывает замечательные сюрпризы в генерируемых SQL запросах. В такие моменты начинаешь жалеть, что не прочитал доки от корки до корки))
Иногда DQL подкидывает замечательные сюрпризы в генерируемых SQL запросах. В такие моменты начинаешь жалеть, что не прочитал доки от корки до корки))
Если в 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 [...]