модели yii и не базы данных - PullRequest
3 голосов
/ 12 марта 2012

Мне нужна помощь, так как мне кажется, что я не могу понять эту концепцию.

В рамках, а именно Yii, мы создаем модели, соответствующие database tables.Мы расширили их с CActiveRecord.

Однако, если я хочу создать класс, который будет получать некоторые данные из других моделей, но затем будет выполнять все вычисления на основе этих результатов и что-то делать с ними ...тогда как мне действовать?

Я хочу четко разделить ответственность, поэтому я не хочу помещать все расчеты в модели на основе исходного БД.По сути, идея заключается в том, что он будет брать некоторые данные из некоторых моделей, а затем обновлять другие модели с результатами вычислений.

Что мне делать?

  • Сохранить все расчеты в каком-либо контроллере и использовать необходимые модели?(Сомневаюсь по этому поводу, потому что есть правило, чтобы держать контроллер в тонком состоянии)
  • Создать модель без базы данных и затем работать оттуда (как?)?
  • Сделать что-то еще (что?)?

Спасибо за любую помощь!

1 Ответ

3 голосов
/ 12 марта 2012

Чтобы использовать интерпретацию Yii для модели, вам нужно создать класс, который зависит от CModel. Это абстрактный класс, поэтому вам потребуется реализовать метод attributeNames().

Чтобы использовать другие "Модели" с этой новой структурой, вам необходимо внедрить их в конструктор или сразу после создания вашей пользовательской модели.


В реальной модели MVC это слой, который в основном содержит два набора классов с конкретными обязанностями: бизнес-логика домена и операции доступа к данным. Объекты, отвечающие за доменную бизнес-логику, не имеют ни малейшего представления, где хранится информация и откуда она поступает. Или даже если есть такая вещь, как «база данных».

Это видео может объяснить немного: https://vimeo.com/21173483

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...