Использование Doctrine в Laravel
Для работы использую Laravel. Как многие знают, в качестве ORM там используется библиотека Eloquent. Дело в том, что я читал много различных статей, где люди настаивали на том, что использовать Doctrine вместо Eloquent будет очень хорошей идеей. Вот я и решил перейти на Doctrine. Но есть одна проблема. Как поставить Doctrine вместо Eloquent в Laravel? Я нашёл библиотеку, которая специально была написана под Laravel http://www.laraveldoctrine.org/, но не знаю, стоит ли использовать её, или взять с официального сайта Doctrine. Скажите пожалуйста, как правильно поступить? И с какими проблемами я могу встретиться при использовании Doctrine вместо Eloquent в Laravel?
Ответы (1 шт):
Как поставить Doctrine вместо Eloquent в Laravel?
Через composer composer require doctrine/orm. Вот официальный гайд.
Проект Laravel Doctrine - это обвязка для использования Доктрины внутри Laravel. На сайте проекта прямым текстом сказано, что делает этот пакет:
- простая конфигурация
- пагинация
- предустановленные метаданные, коннекты и кеширование
- стратегия наименования как в Laravel
- имплементация авторизации и восстановления паролей
- ... и много других фичей
Ставится это также через композер composer require "laravel-doctrine/orm:1.3.*" плюс нужна настройка, вот официальный гайд.
Таким образом, у вас есть выбор - либо ставить Доктрину самостоятельно, и затем интегрировать - делать все то, что заявлено как фичи Laravel Doctrine, либо использовать этот готовый пакет. Решать вам.
И с какими проблемами я могу встретиться при использовании Doctrine вместо Eloquent в Laravel
Вообще, полезно смотреть исходные коды. А также - тесты.
В тестах этого пакета есть валидация, а это значит, что валидация от Лары с голой Доктриной работать не будет. Нужно дорабатывать.
Далее по списку - пагинация, конфигурация, сериализация, кеширование, ..., кажется, я писал это выше. Просто сейчас смотрю тесты, и в них этот заявленный функционал проверяется. И требует реализации, если хотите использовать голую Доктрину, но оставить подход Eloquent.
Скажите пожалуйста, как правильно поступить?
Хотите разобраться, как подружить Доктрину и Лару? Тогда установите ее начните использовать, сталкиваться с трудностями и решать их. Можно подсматривать в исходные коды того проекта.
Нужен простой путь - просто поставьте пакет. Но там тоже не все так гладко, смотрите Issues на Гитхабе