Category Archives: Doctrine 2

Особенности PARTIAL DQL запросов в Doctrine

medium_logo_doctrineИногда у вас может возникнуть ситуация, когда вроде бы при нормальном DQL-запросе объект почему-то грузится не весь. Ну т.е. запрос проходит стадию преобразования из DQL в SQL, выполняется, потом обратно идёт гидрация в объект, а части данных то и нет – отсутствуют некоторые поля, котоыре есть а базе данных. Вы конечно пробуете отключить все кэши, сбрасываете их по 10 раз, а толку ноль.

Race Condition при включенной автогенерации гидраторов Doctrine ORM

Как-то раз столкнулись с очень странной ошибкой. Периодически на продакшене вылетал то один то другой запрос с ошибкой PHP Fatal error: Class ‘Hydrators\VendorDefaultBundleDocumentUserHydrator’ not found in /web/vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/Hydrator/HydratorFactory.php.

Потокобезопасные миграции Doctrine 2 / Symfony 2

sqlgrinder_icon_128x128В этой статье я раскрою сразу две темы. Первая тема – это потокобезопасные миграции в Doctrine 2, а второй будет каскадное исполнение команд в консоле Symfony 2. На самом деле, ко всему надо иметь прагматический подход. Вот например, касаясь той же симфонии, есть там кое-что, что мне определенно нарвится. В частности – это замечательная симфоневская консоль.

Тормозят inserts в MongoDB (Doctrine 2 ODM)

mongodbНедавно на работе столкнулись с такой проблемой. Необходимо было провести импорт множества сущностей из MySQL в MongoDB. Но вот незадача, первые 200 объектов импортировались нормально, а потом скорость начала асимптотически падать стремясь к нулю.

Глобальные блокировки на MongoDB

cluster_iconПредставим себе типичный стартап. Начинается всё с маленького хостинга за пару баксов, потом покупается VPS или даже VDS. Потом убирается первая буква V, и проект переезжает на dedicated а то и colocation. Ну, а через какое-то время у нас уже несколько серверов – один для базы, другой – веб-сервер. А потом….

Оживляем Doctrine 2 Document/Entity при получении из кэша

Zombie-iconНедавно столкнулись на работе с такой проблемой. При получении объекта (Doctrine 2 Document) из кэша все методы, которые у него вызываются, возвращают пустое значение. Особенно интересно было смотерть на это, когда ttl кэша был 10 секунд, и при обновлении страницы результаты то были, то пропадали. 

Заполнение свойств из Embedded другого документа

На днях столкнулись с коллегой с одним занимательным багом. По какой-то причине не заполняся Embedded документ в Doctrine ODM. При всём при этом, когда мы его дампили, то он исправно показывался, а вот до самой MongoDB так и не доходил.