假设我有所有数据库表中的字段状态。当我想要删除一条记录时,我将字段状态的值设置为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()
是否有一种方法可以将某些东西定义为默认范围,以便在我的模型和所有时间的所有方法中始终存在状态= 1 ?
谢谢你的帮助!
这应该可以达到目的,至少对于软删除:
http://four.laravel.com/docs/eloquent soft-deleting
可以使用作用域方法。
public function scopeActive($query)
{
$query->where('status', '=', 1);
}
然后,像这样使用:
Post::active()->get();