Обращение к модели из View ? Грех ?
Добавлено: 2020.02.16, 10:57
Здравствуйте форумчане, такой вопрос.
Изучаю фреймворк, сам всю голову уже сломал как сделать правильно, помогите вы (
Имеется контроллер site и экшн index
Я в нем получаю из модели News новости и передаю из во вью, а далее с помощью foreach вывожу их по 5 новостей на страницу.
Мне нужно сделать чтобы на каждой из новостей был счетчик просмотров(кол-во).
Проблема заключается в том что просмотры записываются в другую таблицу под названием Views и структура такая у неё:
(id, id_news, session_id)
Прямо в контроллере я не могу узнать какой id_news и куда отнести.
Я хотел сделать так: получить все записи из таблицы Views и перебрать их. в массив виде [id_news, кол-во строк с этим id]
но а если этих views записей миллион. Это нагрузка большая и будет долго все это перебирать.
Остается один вариант. Обратится из вью news к модели Views и там уже делать запросы к каждой новости.
Правильно это будет или нет ?
Если нет то как решить по другому проблему мою ?
Спасибо заранее
Изучаю фреймворк, сам всю голову уже сломал как сделать правильно, помогите вы (
Имеется контроллер site и экшн index
Код: Выделить всё
public function actionIndex()
{
$posts = News::find()->orderBy(['date'=> SORT_DESC]);
$countQuery = clone $posts;
$pages = new Pagination(['totalCount' => $countQuery->count(), 'pageSize' => 5] );
$pages->pageSizeParam = false;
$models = $posts->offset($pages->offset)
->limit($pages->limit)
->all();
$all_views = Views::find()->asArray()->all(); // на этом я остановился...
return $this->render('index', compact('models', 'pages', 'all_views'));
}
Мне нужно сделать чтобы на каждой из новостей был счетчик просмотров(кол-во).
Проблема заключается в том что просмотры записываются в другую таблицу под названием Views и структура такая у неё:
(id, id_news, session_id)
Прямо в контроллере я не могу узнать какой id_news и куда отнести.
Я хотел сделать так: получить все записи из таблицы Views и перебрать их. в массив виде [id_news, кол-во строк с этим id]
но а если этих views записей миллион. Это нагрузка большая и будет долго все это перебирать.
Остается один вариант. Обратится из вью news к модели Views и там уже делать запросы к каждой новости.
Правильно это будет или нет ?
Если нет то как решить по другому проблему мою ?
Спасибо заранее