Laravel 5.6 - толстая модель, тонкий контроллер

Попытка понять принцип толстой модели, тонкого контроллера в разработке Laravel на очень простом примере.


1-й пример Я хочу получить все сообщения. В PostController я мог написать:

public function index() {
    $posts = Post::orderBy('updated_at', 'desc')->get();
    return view('home', compact('posts') );
}

И получить все сообщения.


2-й пример: В модели Post:

public function readAllPosts() {
    return $this->orderBy('updated_at', 'desc')->get();
}

PostController:

public function index() {
    $post = new Post;
    return view('home', [
        'posts' = > $post->readAllPosts()
    ]);
}

Это правильно и в чем разница?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
451
1

Ответы 1

Вы можете получить непосредственно из модели, не создавая экземпляр класса, сделав функцию статической. Например, вы возвращаете упорядоченную коллекцию сообщений.

Модель поста:

public static function getOrdered() {
    return Post::get()->orderBy('updated_at', 'desc');
}

PostController:

public function index() {
    return view('home', [
        'posts' = > Post::getOrdered()
    ]);
}

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

Другие вопросы по теме