让我们举一个使用这3个模型的简单示例:Article
,User
,Tag
,以及关系:
Article
- >有一个Author (User)
,
Article
- >有很多Tags
。
在列出文章时,我还希望获得每篇文章的作者和所有标签。
我可以通过两种方式做到这一点:
构建query
以查找包含控制器关系的文章
在laravel中,这看起来像是:
$articles = Article::with(array('author', 'tags'))->where('...')->get();
在Article
模型中创建自定义方法:getArticles
,返回完全相同的内容:
return Article::with(array('author', 'tags'))->where('...')->get();
在第二种情况下,所有关系和查询构建都由模型处理。
所以,我的问题是:控制器应该知道模型关系,还是应该隐藏它。
答案 0 :(得分:2)
最好隐藏它。考虑一个你需要在其他地方做同样事情的情况。如果它在控制器中,你必须重复自己。如果它在模型中,你只需再次调用(相同)模型方法。