首页 > 解决方案 > 我应该在哪个控制器中为关系中的模型编写逻辑

问题描述

我正在与每个都有帖子的用户一起制作博客。自然,我有一个 UserController、PostController 以及一个 User 和 Post 模型。

User 模型与 Post 模型具有一对多的关系,如下所示

// User Model
public function posts()
    {
        return $this->hasMany('App\Post');
    }

我想通过使用获取特定用户的所有帖子

// UserController or PostController...
$posts = User::find($id)->posts()->get()

我应该在我的 UserController 中编写这个逻辑(因为它使用 User 模型)还是应该在我的 PostController 中编写逻辑(因为它返回帖子)?

标签: laravelmodel-view-controllereloquentblogs

解决方案


您可以从两个控制器进行查询。您要从哪里查询关系取决于您要从哪里以及如何获取数据。

例如,如果您在用户个人资料页面上显示与用户相关的帖子以及其他生物数据等,那么您将调用 UserController 中的关系。

另一方面,假设您想在搜索页面上显示与作者相关的帖子,那么最好通过 PostController 中的关系查询帖子。

简而言之,这是一个基于便利性和优化的选择。


推荐阅读