我们什么时候应该在laravel中使用作用域?有什么优势?
public function scopePopular($query)
{
return $query->where('votes', '>', 100);
}
答案 0 :(得分:1)
它会自动为模型的SQL查询添加额外的条件(这些条件是必需的,并将在整个模型中应用)。
为您节省时间和精力,而不是在各处添加重复的代码,以在每次获取模型时添加这些额外条件。它有效地节省了您的时间,您也可以通过在适当的地方手动添加它而无需创建它。就像syntactic sugar
可以说。
主要优势是,如果您以后想要更新条件(例如,需求变更),则可以轻松地在一个地方完成,而无需浏览整个代码< / strong>查找额外条件并进行更新。
例如看一下at this article about scopes in Laravel
例如,假设您希望模型满足某些条件(对于每个模型调用,即全局范围)。例如updated_at > some timestamp
和type = some type
。不必在每次调用模型方法时都添加这些条件,而是添加一个(全局)作用域,默认情况下,每次调用都将其包括在内。就像说的那样,它只是节省时间,而不是到处都是重复的且容易出错的代码。