试图了解胖模型,Laravel开发的瘦控制器原理是一个非常基本的例子。
第一个示例,我想检索所有帖子。在PostController中,我可以这样写:
public function index() {
$posts = Post::orderBy('updated_at', 'desc')->get();
return view('home', compact('posts') );
}
并获取所有帖子。
第二个示例:在帖子模型中:
public function readAllPosts() {
return $this->orderBy('updated_at', 'desc')->get();
}
PostController:
public function index() {
$post = new Post;
return view('home', [
'posts' = > $post->readAllPosts()
]);
}
它正确吗,有什么真正的区别?
答案 0 :(得分:0)
您可以通过使函数静态化而直接从模型中检索而无需实例化类。例如,您要返回一个有序的帖子集合。
发布模型:
public static function getOrdered() {
return Post::get()->orderBy('updated_at', 'desc');
}
PostController:
public function index() {
return view('home', [
'posts' = > Post::getOrdered()
]);
}
其背后的想法是,您正在将数据库逻辑和控制器逻辑之间的关注点分开。