Doctrine DQL и его хитрый Limit-subquery-алгоритм
Иногда DQL подкидывает замечательные сюрпризы в генерируемых SQL запросах. В такие моменты начинаешь жалеть, что не прочитал доки от корки до корки))
Иногда DQL подкидывает замечательные сюрпризы в генерируемых SQL запросах. В такие моменты начинаешь жалеть, что не прочитал доки от корки до корки))
Регистрируясь в нашей системе пользователь должен подтвердить свой email. Как только пользователь подтверждает свой email его с чистой совестью можно добавить в группу «client» и разрешить использовать все возможности нашей системы не требуя перелогиниться.
И вот вчера, решая эту простую задачу я столкнулся с очень любопытным явлением, о котором я бы хотел рассказать.
В продолжении статьи: CodeSwarm – визуализация коммитов репозитория, сделал парочку видео с репозиториями наших основных средств разработки: Symfony и Doctrine.
Если в 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 [...]
Doctrine forms – дополнительная прослойка в symfony form фреймверке для работы с doctrine ORM. Она позволяет легко создавать формы для редактирования объектов базы данных.
Ниже схематически представлена простейшая форма, отвечающая за редактирование объекта, в данном случае – профайла пользователя.