控制器应该知道模型关系吗?

时间:2013-12-09 10:18:22

标签: php orm laravel laravel-4 eloquent

让我们举一个使用这3个模型的简单示例:ArticleUserTag,以及关系:

Article - >有一个Author (User)
Article - >有很多Tags

在列出文章时,我还希望获得每篇文章的作者和所有标签。

我可以通过两种方式做到这一点:

  1. 构建query以查找包含控制器关系的文章 在laravel中,这看起来像是:

    $articles = Article::with(array('author', 'tags'))->where('...')->get();

  2. Article模型中创建自定义方法:getArticles,返回完全相同的内容:

    return Article::with(array('author', 'tags'))->where('...')->get();

  3. 在第二种情况下,所有关系和查询构建都由模型处理。

    所以,我的问题是:控制器应该知道模型关系,还是应该隐藏它。

1 个答案:

答案 0 :(得分:2)

最好隐藏它。考虑一个你需要在其他地方做同样事情的情况。如果它在控制器中,你必须重复自己。如果它在模型中,你只需再次调用(相同)模型方法。