Изучая Laravel, и MVC в общем, делаю сайт блог, в котором есть след. таблицы:
- articles - статьи
- article_tags - связь тегов со статьей
- tags - теги
- comments - комменты
На главной странице нужно отображать множество статей и у каждой их них есть список тегов.
У меня нет опыта работы с моделями и сначала я сделал все обращения к БД в контроллере через запросы.
Выглядит выборка так:
return DB::select(
'SELECT a.`id`, a.`Title`, a.`Text`, a.`create_at`,
(SELECT GROUP_CONCAT(\'<a href="/tag/\', t.id, \'">\', t.`name`, \'</a>\' SEPARATOR \'\')
FROM article_tags _t
INNER JOIN tags t ON _t.tag_id = t.id WHERE _t.article_id = a.id) AS `tags`
FROM articles AS a
LIMIT '.($curPage-1)*$articlesOnPage.', '.$articlesOnPage);
Но ведь суть MVC гласит о разделении логики, и особенно обращение к БД через
модели, значит мое решение не кошерно, и надо перенести все в модели.
Далее я не понимаю как правильно создать модели:
1) К каждой
articles надо будет получать список тегов, нужно ли создавать модель таблицы
article_tags, ведь эта таблица всего лишь связующая, или в моделе таблицы
articles добавить метод типа getMyTags в котором описать тот же запрос?
2) Мне будет сложно описать запрос используя методы моделей или конструктора запросов, мне проще написать запрос в ручную. Обязательно ли пользоваться спец. методами в моделях?