如何为模型中的所有选择查询定义默认 where 条件?

Mur*_*rov 1 mysql default model laravel eloquent

我需要在我的模型中设置默认的 where 条件。

所以实际上我必须在我的所有选择查询中设置它。

查询如:

->where('status','active')
Run Code Online (Sandbox Code Playgroud)

Dhr*_*val 5

您可以在模型中使用 laravel 范围(局部范围或全局范围):

全局范围示例:

在 Model.php 中:

 protected static function boot()
    {
        parent::boot();    
        static::addGlobalScope('status', function (Builder $builder) {
            $builder->where('status', 'active');
        });
    }
Run Code Online (Sandbox Code Playgroud)

本地范围示例:

在 Model.php 中

public function scopeIsActive($query)
    {
        return $query->where('status', 'active');
    }
Run Code Online (Sandbox Code Playgroud)

在控制器中:

Model::isActive()->get();
Run Code Online (Sandbox Code Playgroud)

来源