Pull to refresh

Comments 10

Чем вызвана необходимость использовать аннотации вместо атрибутов в примерах после первого?

*а в тегах еще и php5, при том что атрибуты появились только в 8 версии.

Хорошо подметили, не ту версию php в тегах указали. Уже убрали)

А можно ведь было сделать отдельные классы на сущности домена, мапить их при сохранении в таблицу и не насиловать бедные ActiveRecord'ы из доктрины :)

Ваш комментарий вообще мимо. В доктрине как раз не используется ActiveRecord а DataMapper. Так что с этим как раз все в порядке

Точно?


Давайте разбираться: у нас есть объект который объединяет в себе логику и структуру БД (в данной статье App\Entity\Car|Buggy|Auto).

Где здесь маппер? :)

Маппер находится вне этих сущностей, этим занимается доктрина. А где здесь ActiveRecorsd?

Ну собственно описанные сущности это и есть AR. Определение Мартина: https://martinfowler.com/eaaCatalog/activeRecord.html

В данном случае сущности 1 к 1 отражают таблицу и то как хранятся в базе сущности. Дополнительно к этому они нагружены еще и бизнес-логикой. У вас не получиться в эти объекты добавить логику и данные, которые будут идти в разрез с БД - доктрина подавится.

То что что в данных объектах нет метода save и delete, т.е. они не инкапсулируют в себе работу с базой, это еще не значит что они не AR (возможно не совсем в классическом понимании).

Почему нельзя добавить логику и данные которые будут идти в разрез с БД? Как раз таки можно добавить любые данные и любую логику в разрез с бд. Так-же имена свойств сущностей могут не совпадать с именем поля в бд. Общего у него с ActiveRecords только то что сущность имеет данные и поведение судя по вашей ссылке в определении Мартина. То что в доктрине по Мартину Фаулеры больше похоже на это https://martinfowler.com/eaaCatalog/dataMapper.html. Так же хочу заметить, что бывают случаи когда одна сущность имеет несколько представлений не только в одной бд, но и в нескольких, например в postgreSql и mongoDb. И доктрина с этим очень хорошо работает с помощью ORM и ODM

https://www.doctrine-project.org/projects/doctrine-mongodb-odm/en/2.5/index.html

https://www.doctrine-project.org/projects/doctrine-orm/en/latest/index.html

Скажи пожалуйста, а почему нельзя просто создать отдельные entity и сделать join?

При нагрузке эффект лучше?

В этом случае не удобно будет работать с сущностями, а так при выборке объектов доктрина все делает за нас и объединяет таблицы под капотом.

Sign up to leave a comment.

Articles