Intereting Posts
Как сделать эту функцию PHP для парсинга почти идеальной? Обзор сайта для первого пользователя для всех страниц Как вставлять твиттер-твиты .. Как поймать изображения с URL-адресов твитов и отображать фактические изображения? Как создать цикл для этого выпадающего меню? Каков наилучший способ включить таблицу стилей для определенной страницы? PHPUnit RabbitMQ: написать тест для создания функции соединения laravel csv, как получить файл csv с передними нулями MySQL: определение основного ключа таблицы динамически Хранение флажков в PHP-форме Кэширование подготовленных отчетов PDO установка флажка и его проверка Как я могу интерполировать существующий литерал строки php внутри json-файла? Инструменты для визуального анализа использования памяти приложения PHP перенаправить, если url содержит определенную строку, используя htaccess Предлагаемое решение: создание уникальных идентификаторов в распределенной среде

Laravel быстрее запрашивать все в контроллере или в представлении

Быстрее ли запрашивать все в контроллере и возвращать каждый запрос назад или запрашивать его во время его использования?

Предполагая, что все модели имеют отношение

Пример:

Сделайте все в котроллере, а затем верните

Public function articlesHome($id) { $art = Articles::find($id); $cit = Articles::city(); $tag = Articles::tags(); Return view('articles', compact('art', 'tag', 'cit'); } 

Или в поле зрения (после того, как контроллер вернул $ article)

 {{ $article->name }} ... {{ $article->city->name }} ... @foreach($article->tags as tag) {{ tag->name }} @endforeach 

Что лучше на практике и быстрее.

Производительность – это всего лишь вопрос поиска способа получить меньше запросов к базе данных для достижения того же результата.

Хороший подход позволил бы laravel сделать это за вас в одной команде:

 Public function articlesHome($id) { $article = Articles::whereId($id)->with('city','tags')->get(); Return view('articles', compact('article'); } 

Ваше мнение будет таким же. Соотношения статей уже построены, поэтому никаких дополнительных запросов не будет.

 {{ $article->name }} ... {{ $article->city->name }} ... @foreach($article->tags as tag) {{ tag->name }} @endforeach 

Хорошим примером для чтения является MVC, который обозначает Модели, Представления и Контроллеры.

Это шаблон проектирования, в котором основное внимание уделяется разделению проблем, где вы разделяете различные проблемы ваших приложений на разные разделы. Поиск данных – это модель (обычно база данных, но не обязательно), вид (шаблоны Blade) и контроллер.

Вы можете выйти за рамки простого MVC и разделить все дальше, включив в него репозитории, события и команды для лучшего разделения.

Причина, по которой вы, возможно, захотите использовать репозитории (которые являются только обертками вокруг вашей модели), – это абстрагирование фактического поиска и сохранения ваших данных с вашего контроллера, что позволяет вам отказаться от использования базы данных в другой форме, не требуя обновления кода в ваших контроллерах.

Я предполагаю, что быстрее это сделать в представлении, пока вы сэкономите время, отправив его в представление. Я рекомендую вам установить laurvel debugbar для просмотра деталей.