我需要在模型中设置默认的where条件。
实际上,我必须在所有选择查询中进行设置。
查询方式:
->where('status','active')
答案 0 :(得分:3)
您应该尝试以下操作:
您的型号:
class News extends Eloquent {
public function scopeStatus($query)
{
return $query->where('status', '=', 1);
}
}
您的控制器:
$news = News::status()->get();
答案 1 :(得分:3)
您可以在模型中使用laravel范围(本地范围或全局范围):
全局范围示例:
在Model.php中:
protected static function boot()
{
parent::boot();
static::addGlobalScope('status', function (Builder $builder) {
$builder->where('status', 'active');
});
}
本地范围示例:
在Model.php中
public function scopeIsActive($query)
{
return $query->where('status', 'active');
}
在控制器中:
Model::isActive()->get();
答案 2 :(得分:1)
您可以使用全局范围: https://laravel.com/docs/5.7/eloquent#global-scopes
将其写在要查询的模型中
/**
* The "booting" method of the model.
*
* @return void
*/
protected static function boot()
{
parent::boot();
static::addGlobalScope('status', function (Builder $builder) {
$builder->where('status', 'active');
});
}