@dindilin
Programming

Запрос к базе в модели или контроллере?

Помогите, запутался совсем.
Вот есть контроллер с экшеном IndexController, который имеет модель Page.
Вот надо вывести в индекс определенное значение ,например с name="TestPage" , то обращение к базе проводить надо в контроллере?

public function IndexController() {
$page= Page::find()->where(['name'=>'TestPage']);
return $this->render ('index', ['page'=>$page]);
}

или в некоторых вариантах вообще встречал запрос к базе во вьюхе. Кусок взят из yii starter kit

[
'attribute'=>'category_id',
'value'=>function ($model) {
return $model->category ? $model->category->title : null;
},
'filter'=>\yii\helpers\ArrayHelper::map(\common\models\ArticleCategory::find()->all(), 'id', 'title')
],

разве это правильно?
  • Вопрос задан
  • 333 просмотра
Пригласить эксперта
Ответы на вопрос 2
miraage
@miraage
Старый прогер
Нет, оба варианта неправильны.
Читаем про SOLID/GRASP.
Ответ написан
bitver
@bitver
В контроллере в вашем коде (чуть недописанном, по-моему) вы обращаетесь не к БД напрямую, а к модели - это то, что подразумевает MVC. НО! Пример слишком прост и в этом частном случае все по канону, а на сколько вы правильно это поймете - другой вопрос.
Во view играться с моделями опасно, желательно туда передавать объект готовый для отображения.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы