Преобразует ли datamapper результат SGBD в объект?


Я работаю с MySQL, и результаты/строки возвращаются в массиве.

Я понимаю, что, в конце концов, "цель" уровня модели состоит в том, чтобы вернуть объект после обработки запроса SGBD.

Итак, должен ли процесс преобразования строк (или одной строки) в объект быть интегрирован в DataMapper (который является частью слоя модели) или за это должна отвечать третья служба, которая будет внедрена в DataMapper?

Спасибо

Author: Vincent, 2017-03-31

3 answers

Итак, должен ли процесс преобразования строк (или одной строки) в объект быть интегрирован в DataMapper.

Ну да, это ответственность картографа данных. Он должен возвращать сущность, а не результирующий набор.

Или это должна быть ответственность третьей службы, которая будет введена в DataMapper?

Это также возможно, Google для "UnitOfWork", я думаю, это то, что вы ищете. https://www.sitepoint.com/implementing-a-unit-of-work/

Вы также можете взглянуть на источник доктрины https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/EntityManager.php

 3
Author: Sander Visser, 2017-04-11 10:26:02

Да, я согласен с Сандером, ваша бизнес-логика должна быть на другом уровне. Но это не должно быть в контроллере.

enter image description here

Классический MVC сжатый из 3-х частей:

А модель хранит данные, которые извлекаются в соответствии с командами контроллера и отображаются в представлении.
А посмотреть генерирует новые выходные данные для пользователя на основе изменений в модели.
A контроллер может отправлять модели команды для обновления состояния модели (например, для редактирования документа). Он также может отправлять команды в связанное с ним представление для изменения представления модели в представлении (например, прокрутка документа).

Любые части в MVC - это независимый шаблон.

Существуют активные и пассивные MVC. Классический MVC активен.

В активной модели, состоящей из трех компонентов, модель находится в действие. Основное отличие от реализации Пассивной модели заключается в том, что в реализации активной модели Модель уведомляет Представление, когда Модель изменяется Контроллером. Наглядное представление прояснит это больше.

В активной бизнес-модели логика заложена в модели, а контроллер тонкий.

Вы можете разделить DataMapper и добавить новую службу для преобразования ваших данных, возврата данных в модель и возврата данных контроллеру

 0
Author: Konstantin Okhotnick, 2017-04-10 07:05:12

Лучше вернуть объект из модели в контроллер, потому что всякий раз, когда вам нужен результат или строка, вы можете просмотреть каждый из них.

 0
Author: Rahmatullah Darwish, 2017-04-10 09:05:56