ORM в мире PHP

Sufir

Я не волшебник, я только учусь
Есть ли что-то более менее приличное, а не вездесущий AR, кроме Doctrine?

И второй вопрос, кто-то (вроде @Redjik) обещал поделиться опытом применения AR с DDD... может у кого-то есть опыт, материалы, статьи, примеры? В общем как попроще но получше разделять persistence и domain model.
 
Последнее редактирование:

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Как Новосибирск в ночи выглядит таинственней и привлекательней, так и обнаженный SQL-запрос под ORM выглядит гораздо сокровенней и желанней. Никто не смотрит в глубину, никто не стремится проникать в корни, ведь человек боится любой глубины. ORM, как и кислота, придают потрохам, улыбке Венеры или невидимому домкрату целостность, все становится одинаково скрытым и надежно спрятанным под идеей, концептом. (источник)
 

Yoskaldyr

"Спамер"
Партнер клуба
@Фанат, А мне понравилось :) Единственное что пришлось допилить это nested transactions, а так довольно простая либа и понятно как внутри все работает.

P.S. Идеи у Пола неплохие и лучше бы он дофодил до ума, а не воевал с симфонистами, что бесполезно ибо их тупо больше в том же PHP-FIG-е
 

Sufir

Я не волшебник, я только учусь
C ходу что-то тоже не очень понятно, попробую глянуть ближе, но там alpha1 и 87 скачиваний - это смущает, а нужно что-то рабочее, интерес не только и не столько академический.

Вот, ещё такой зверь Analogue ORM попался, может кто-то сказать что-то про него?
 
Последнее редактирование:

Yoskaldyr

"Спамер"
Партнер клуба
@Sufir, Почти все его его либы довольно стабильные, даже если альфа. Но если баги и будут, то код понятный и исправлять легко. Но дальнейшее развитие довольно туманно. Может и будет, но только если будет востребовано, а так он все свое время на войны в сообществе тратит.
 
Последнее редактирование:

Вурдалак

Продвинутый новичок
Вот есть passive record от нашего бравого вояки Пола Джонса, https://github.com/atlasphp/Atlas.Orm
Я честно пытался въехать, о чем это, но так и не продрался, ни здесь, ни в статье, https://www.sitepoint.com/a-first-look-at-atlas-the-orm-that-delivers/
Стоит отметить, что это не полноценная ORM и там ясно сказано, что это не стоит использовать для domain model:
Atlas is a data mapper implementation for your persistence model (not your domain model).
А в этом смысле нет абсолютно никакой разницы что использовать для persistence model: ActiveRecord или что-то другое.
 

Yoskaldyr

"Спамер"
Партнер клуба
@Фанат, Да просто чекпоинты добавил. В мускуле работает без проблем для тех типов таблиц которые у меня используются. Делать универсально не было необходимости
 

Sufir

Я не волшебник, я только учусь
Про Laravel ничего, как и про Eloquent. Плевать что в недрах illuminate/database.
Про Analogue хочу услышать впечатления от использования, опыт и мысли по поводу перспектив. На первый взгляд выглядит как то что мне нужно - "quick and intuitive way to query and persist custom domain objects into a SQL Database".
 

Вурдалак

Продвинутый новичок
Вариантов несколько:

1. Писать настоящие domain models, а потом маппить их вручную на всякие Eloquent/Doctrine/Atlas.ORM.
2. Использовать напрямую Eloquent/Analogue ORM/Doctrine/Atlas.ORM, мириться с ограничениями, вводить запрет на уровне соглашения на использование свойств вне сущности (актуально для Eloquent, Analogue ORM, Atlas.ORM), мучиться с конфигами для организации embeddable (value objects).
3. (Утопический). Найти идеальную ORM, которая умеет маппить любой domain model на БД. Писать конфиги столько же или больше по времени, чем маппить вручную в пункте 1.
 

Sufir

Я не волшебник, я только учусь
Да это, в общем-то понятно, меня вот что заинтересовало:
  • Now support any plain object that implements Mappable interface
https://github.com/analogueorm/analogue/blob/5.1/src/Mappable.php

Т.е. уже никаких AR, и свойств/геттеров/сеттеров наружу, прочего мусора в domain. Только пара "левых" методов для persistence и при этом меньше ручной работы. Понятное дело, что сложные случаи всё равно придется вручную разбирать. Хочется, кончено, вариант 4 (сверхутопический) - кнопку "сделать хорошо и не писать конфиги" )) но, пока подойдет и что-нибудь, что упростит работу по варианту 1 (Analogue выглядит как-раз как то, что упростит маппинг на Eloquent).

В общем и целом понятно, всем спасибо.
 
Сверху