在Laravel中的控制器模型中使用scopePublished()方法?

时间:2017-05-16 17:12:59

标签: php laravel

我的模型中有一个方法:

public function scopePublished($query)
{
    return $query->where('status', 'PUBLISHED')
                 ->where('date', '<=', date('Y-m-d'))
                 ->orderBy('date', 'DESC');
}

此方法将在多个地方用于检索已发布的文章。

但是,现在,我在我的控制器中,我想使用这个功能。我怎样做?我从Laravel(和OOP)开始。

我试试这个:

$query = Article::paginate(8)

scopePublished($query)

你可以向我解释一下吗?谢谢

2 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,您想要对已发布的文章进行分页。所以你可以这样做。

$query = Article::published()->paginate(8)

有关详细信息,请查看Query Scopes

下的Local Scopes

答案 1 :(得分:0)

范围用作查询的一部分,而不附加单词scope。在您的情况下,您可以像这样使用它

$articles = Article::published()->paginate(8);

查看官方文档,了解有关本地和全球范围的更多信息。

https://laravel.com/docs/5.4/eloquent#local-scopes