Использование Doctrine в Laravel

Для работы использую Laravel. Как многие знают, в качестве ORM там используется библиотека Eloquent. Дело в том, что я читал много различных статей, где люди настаивали на том, что использовать Doctrine вместо Eloquent будет очень хорошей идеей. Вот я и решил перейти на Doctrine. Но есть одна проблема. Как поставить Doctrine вместо Eloquent в Laravel? Я нашёл библиотеку, которая специально была написана под Laravel http://www.laraveldoctrine.org/, но не знаю, стоит ли использовать её, или взять с официального сайта Doctrine. Скажите пожалуйста, как правильно поступить? И с какими проблемами я могу встретиться при использовании Doctrine вместо Eloquent в Laravel?


Ответы (1 шт):

Автор решения: Total Pusher

Как поставить 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 на Гитхабе

→ Ссылка