假设我在所有数据库表中都有字段状态。当我想删除一条记录而不是清除它时,我将字段状态的值设置为0.这意味着我的所有查询当然都会使用where子句,例如:
WHERE status = 1
但是,这意味着我必须编写并将where('status','=',1)附加到我雄辩的模型的所有方法中。它总是如下:
Post::find(1).where('status', '=', 1)
Post::where('status', '=', 1)->get()
Post::find(1).where('status', '=', 1).comments().where('status', '=', 1)->get()
有没有办法将某些内容定义为默认范围,以便status = 1始终存在于我的模型的所有方法中并始终存在?
我感谢任何帮助!
答案 0 :(得分:2)
这应该可以解决问题,至少关于软删除:
答案 1 :(得分:1)
您可以使用范围方法。
public function scopeActive($query)
{
$query->where('status', '=', 1);
}
然后,你这样使用:
Post::active()->get();