如何将状态(条件)检查直接应用于laravel中的模型?

时间:2016-11-08 14:02:31

标签: laravel

我已在产品表中添加了状态列。现在我希望当我使用Product::all()时,我只获得状态为积极的产品。软删除之类的东西。我希望模型在被再次激活之前忽略被动产品。有没有办法做到这一点?

PS:我已经在很多地方使用了模型(Product :: class)。所以我正在寻找影响我已经制作的所有方法的直接方法。否则我将不得不逐一将解决方案应用于所有方法。

3 个答案:

答案 0 :(得分:2)

这是IMO的最佳方式,在模型中创建一个范围

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

这样,你可以做这样的事情

Product::active();

答案 1 :(得分:2)

如果您正在寻找与Soft Deletes完全相同的功能,则可以使用global scopesSoftDeletes trait uses global scope。因此,如果您将全局范围应用于Product模型Product::all(),则会返回status = 1所有结果。

答案 2 :(得分:1)

您可以尝试:

 Product::where('status', 1)->get()