【发布时间】:2014-11-23 14:07:47
【问题描述】:
我有一个已发布的过滤器,用于我的文章。访客只能查看已发布的文章,登录用户可以查看和应用过滤器(?published=0/1):
public function scopePublishedFilter($query)
{
if(!Auth::check()) $query->where('published', '=', 1);
else
{
$published = Input::get('published');
if (isset($published)) $query->where('published', '=', $published);
}
return $query;
}
我在我的ArticlesController 中应用了这个:
public function index()
{
return View::make('articles.index', [
'articles' => Article::with('owner')
->with('category')
->with('tags')
->publishedFilter()
->get()
]);
}
关于文章关系:
public function articles()
{
return $this->hasMany('Article')->publishedFilter();
}
但理想情况下,我只想在 Article 模型本身中定义它,因为在实现新功能或视图时很容易忘记包含此过滤器。
如何确保所有来自Article 模型的返回文章在返回前都经过此过滤器?
【问题讨论】:
标签: laravel laravel-4 eloquent