Laravel 5.6-胖模型,瘦控制器

时间:2018-06-22 17:21:35

标签: laravel laravel-5.6

试图了解胖模型,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()
    ]);
}

它正确吗,有什么真正的区别?

1 个答案:

答案 0 :(得分:0)

您可以通过使函数静态化而直接从模型中检索而无需实例化类。例如,您要返回一个有序的帖子集合。

发布模型:

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

PostController:

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

其背后的想法是,您正在将数据库逻辑和控制器逻辑之间的关注点分开。