0

假设我的所有数据库表中都有字段状态。当我想删除一条记录时,我将字段状态的值设置为 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 始终存在于我的模型的所有方法中并且一直存在?

我很感激任何帮助!

4

2 回答 2

2

这应该可以解决问题,至少在软删除方面:

http://four.laravel.com/docs/eloquent#soft-deleting

于 2013-05-12T18:56:57.763 回答
1

您可以使用范围方法。

public function scopeActive($query)
{
    $query->where('status', '=', 1);
}

然后,你像这样使用:

Post::active()->get();
于 2013-04-10T18:50:50.220 回答