Я работаю над проектом в Symfony 3.0.1, который использует пять баз данных с DBAL в качестве уровня доступа к данным. Я всегда работал в Symfony с ORM, и я всегда использовал следующую модель MVC:
CONTROLLER → REPOSITORY (запросы идут здесь) → ENTITY
CONTROLLER → render ($ view, $ params) → VIEW
Эта модель позволяет использовать короткие и простые контроллеры, но теперь я использую DBAL, поэтому я не могу использовать репозитории.
Вопрос в том:
Как я могу достичь аналогичной модели с помощью DBAL? В других словах: Где я должен поставить запросы?
Должен ли я использовать службы вместо хранилищ?
Примечание. Я использую только оператор select в этих базах данных.
Заранее спасибо!
Для использования объектов вам не требуется ORM.
Аналогично, вам не нужна Doctrine, чтобы иметь возможность создавать репозитории, когда репозиторий представляет собой реализацию шаблона проектирования:
вместилище
Промежуточное взаимодействие между доменами и слоями сопоставления данных с использованием интерфейса, подобного коллекции, для доступа к объектам домена. Прочитайте больше
Даже если вы не можете использовать Doctrine ORM, вы все еще можете создавать классы POPO против абстрактного модельного класса и/или интерфейса модели.
Вы можете ввести объект DBAL Connection для каждой модели/объекта с помощью метода построения или сеттера. После создания классов репо легко. Возвращение объектов коллекций, увлажняющих предметов или использование необработанных массивов зависит от вас.
Я добавил настоящий образ жизни, который я использовал в прошлом (несколько лет назад), посмотрите:
Что касается услуг, было бы намного лучше, если бы были специализированные и четко определенные модели (в отличие от анемичных моделей), работающие вместе внутри службы, которая координирует всю транзакцию, в этом случае это будет то, что мы знаем по Единице работы (см. Раздел Рабочий шаблон)