Что такое
Прежде всего, я хотел бы дать свою интерпретацию используемых вами терминов.
DTO (Объект передачи данных)
- Обычно PHP класс с общедоступными c свойствами
- Отвечает только за перенос данных
- Не проверяет данные
- Не знает ни о каких спецификациях реализации c вещей (например, с каким ORM он связан)
- Обычно используется для передачи данных между частями приложения, при этом ни одна из сторон не знает о реализации другой
модели домена
- Обычно класс PHP с частными свойствами
- Должен содержать только действительные данные
- Проверяет, что любые изменения приводят к действительному состоянию
- Не знает ни о каких специфических реализациях c вещей (например, с каким ORM он связан)
Репозиторий
- Отвечает только за хранение и извлечение данных
- Знает ли это о своей реализации (например, с каким ORM он связан)
- не несет ответственности за возврат действительных данных
Что это означает для вашего случая
Ответ действительно зависит от того, насколько чисто Вы бы хотели думать о разделении обязанностей.
Если вы говорите с пуристами, они скажут, что модели Eloquent не являются DTO, и они не являются моделями доменов. Репозиторий вернет красноречивую модель, которая будет сопоставлена с моделью предметной области. Затем эту модель предметной области можно изменить или преобразовать в DTO, который можно использовать для чтения данных. В этом случае обязанности разделены за счет большего количества кода.
Если вы говорите с прагматиками, они скажут, что Eloquent модели - это DTO и модели предметной области (а иногда даже и репозитории). Поскольку красноречивые модели отвечают за хранение данных, их извлечение, изменение данных и передачу этих данных в другие части приложения.
В конце концов, все зависит от предпочтений. Вы можете go чистым, вы можете go прагматическим c, вы можете даже выбрать что-то промежуточное. Это зависит только от того, насколько вы продвинутый кодер, насколько велик проект, насколько он должен обслуживаться, насколько быстро должны быть внесены изменения и т. Д. c.
Tdlr
Репозиторий может вернуть DTO или модель предметной области в зависимости от того, насколько чисто вы думаете с точки зрения разделения обязанностей.