Попытка понять принцип толстой модели, тонкого контроллера в разработке 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()
]);
}
Это правильно и в чем разница?






Вы можете получить непосредственно из модели, не создавая экземпляр класса, сделав функцию статической. Например, вы возвращаете упорядоченную коллекцию сообщений.
Модель поста:
public static function getOrdered() {
return Post::get()->orderBy('updated_at', 'desc');
}
PostController:
public function index() {
return view('home', [
'posts' = > Post::getOrdered()
]);
}
Идея заключается в том, что вы разделяете проблемы между логикой базы данных и логикой контроллера.