雄辩ORM,如何避免冗余查询



假设我有所有数据库表中的字段状态。当我想要删除一条记录时,我将字段状态的值设置为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();

最新更新