Comments 16
У нас в проекте используется Eloquent без Laravel и вот это всё просто недоступно, так как завязано на artisan. Схожая проблема с Doctrine без Symfony.
Схожая проблема с Doctrine без Symfony.
Какая проблема? У доктрины доступен набор симфонёвых команд, а добавить их в консоль - дело 5 минут же. В теории можно даже в композер их вогнать, а не ставить symfony/console отдельно, т.к. композеровская консоль совместима с симфонёвой.
Ну, вероятно, не углублялся, документация на этот счёт ясности не внесла, когда разбирался.
Так там не особо и углубляться. В исходниках на самом видном месте. Например: https://github.com/doctrine/migrations/tree/3.8.x/src/Tools/Console/Command
Я не большой профессионал в Laravel, но разве это не монолитный фреймворк? Можно как-то установить только Eloquent?
Да, вполне можно https://github.com/illuminate/database
в юи прекрасно выручал schmunk42/yii2-giiant в свое время. почти "раунд трип" получалось устроить в некоторых проектах.
Спасибо, что подсветили Yii2. Что вы вкладываете в термин "раунд трип"? Я и без контекста не знаю, что это значит )
Вероятно, он имел в виду то, что вы по миграциям генерируете модели, а потом по моделям — опять миграции и получаете ровно те же самые файлы (ну, или почти те же самые, судя по оговорке автора). Такой round trip (то есть, «поездка туда-обратно», когда мы, сделав некий круг, возвращаемся в исходную точку).
Соответственно, при идеальном «раунд трипе» эти действия можно повторять бесконечно: миграция — модель — миграция — модель и так далее.
https://github.com/ManyakRus/ddl_from_protobuf
Генерация DDL .sql из файла protobuf. Нужен, например, чтоб интегрировать к себе сторонний сервис :-)
Я у себя на работе написал свою команду по кодогенерации, а потом решил написать пакет https://github.com/dev-lnk/laravel-code-builder. Суть в том что этот пакет берет таблицу в бд и на её основе генерирует модель, FormRequest, форму(html), таблицу(html) и прочие сущности, которые в 80% случаев каждый раз мне приходилось писать руками.
Если честно непонятно про что ваша статья, про автогенерацию кода либо реверс генерацию БД из кода? В любом случае и то и другое давно было реализовано в Doctrine в той же Symfony еще лет 10 назад, "америку" вы не открыли.
Что касаемо самой автогенерации как инструмента, то я не видел ни одного реального, живого, боевого с каким-либо вменяемым rps проекта где бы использовалась автогенерация моделей или наоборот. Более того подобный подход является антипаттерном и по сути выносит ваши сушности на иной уровень - уровень инфраструктуры, он не позволит вам реализовать тот же DDD, Clean Architecture и тд, те ту архитектуру где сущность это не тупой ActiveRecord, а где сущность это ядрос системы, обьект обогащенный бизнес логикой, где он единая точка правды и валидации состояния.
Я конечно же не против автогенерации, ее успешно можно применять на уровне инфраструктуры, те контроллеры, команды, DTO обьекты входящих запросов, но не домен и сущности, там только в ручную.
В общем весь этот "сахар" в виде автогенерации напоминает мне мертворожденные фитчи которые в адекватном проекте никогда не будут использованы, разве что в абстрактном вакуме или в подделках типа hello world
.
Ну всё же DAO -> AR это чисто инфраструктурная шляпа и к домену имеет крайне мало отношения. Так что автогенерация ничего особо не должна поломать, т.к. по факту это просто типизация данных, приходящих из репозитория. Вместо ассоциативного массива - просто Eloquent модель, которая уже потом переносится на реальную доменную энтитю.
Не?
P.S. Ну если мы уж начинаем зачем-то переходить из плоскости Laravel, который в принципе не предназначен для сложных энтерпрайз-архитектур в серьёзные проекты, порезанные на слои с изоляцией домена от инфры.
Ну всё же DAO -> AR это чисто инфраструктурная шляпа и к домену имеет крайне мало отношения.
Да, я с вами согласен, имхо, каждый раз когда я начинал использовать лару с ее eloquent сразу в голове всплывали флешбеки из yii 10-летней давности, это лично меня всегда отталкивало от лары, поскольку для того чтобы построить приложение которое имеет хотябы немного логики, пришлось бы выносить обьекты eloquent на уровень инфраструктуры, реализовывать отдельные сущности в домене и реализовывать еще отдельный пласт кодовой базы которая умела бы порождать одно из другого, в общем много "мышиной" возни в этом случае.
В случае с doctrine , ее сущности из коробки можно использовать в качестве доменных сущностей, реализуя в них бизнес логику которая будет валидировать состояние обьекта и тем самым будет единой точкой правды, а на инфраструктурный слой выносить лишь репозитории.
В общем это я к тому, что, (имхо) весь этот сахар в виде автогенераций, прекрасен лишь в hello world или построения абстрактного коня в вакуме. Хотя конечно всему свой инструмент, возможно легкость лары и eloquent будут плюсом в случае построения крайне тонких микросервисов без какой-либо логики.
Кодогенерация моделей и миграций в Laravel