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

如何将状态(条件)检查直接应用于laravel中的模型?,laravel,Laravel,我已将状态列添加到我的产品表中。现在我想知道,当我使用Product::all()时,我只得到状态为活动的产品。类似于软删除。我希望模型忽略被动的产品,直到它们再次被激活。有办法做到这一点吗 PS:我已经在很多地方使用过这个模型(Product::class)。因此,我正在寻找一种直接的方法,它会影响我已经采用的所有方法。否则,我将不得不对所有方法逐一应用解决方案 您可以通过以下方式进行尝试: Product::where('status', 1)->get() 您可以通过以下方式进行

我已将状态列添加到我的产品表中。现在我想知道,当我使用
Product::all()
时,我只得到状态为活动的产品。类似于软删除。我希望模型忽略被动的产品,直到它们再次被激活。有办法做到这一点吗

PS:我已经在很多地方使用过这个模型(Product::class)。因此,我正在寻找一种直接的方法,它会影响我已经采用的所有方法。否则,我将不得不对所有方法逐一应用解决方案

您可以通过以下方式进行尝试:

 Product::where('status', 1)->get()
您可以通过以下方式进行尝试:

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

这是在模型中创建范围的最佳方法

function scopeActive($query) {
  return $query->where('status', 1);
}
这样,你可以做这样的事情

Product::active();

这是在模型中创建范围的最佳方法

function scopeActive($query) {
  return $query->where('status', 1);
}
这样,你可以做这样的事情

Product::active();

如果您正在寻找与软删除完全相同的功能,则可以使用。因此,如果您将全局作用域应用于
产品
模型
产品::all()
将返回所有结果,其中
状态=1

如果您正在寻找与软删除完全相同的功能,则可以使用。因此,如果将全局范围应用于
Product
model
Product::all()
将返回所有结果,其中
status=1

我正在寻找一种影响我已使用的所有方法的解决方案。这样,我必须遍历所有方法并逐个添加。在这种情况下,您可以将所有方法作为静态方法添加到模型中。我不确定这是不是最好的办法。请注意,如果不传递数组参数,它将抛出一个错误。公共静态函数all($ar=[]){return self::where(['status_id'=>1])->get();}我正在寻找一个影响我已经创建的所有方法的解决方案。这样,我必须遍历所有方法并逐个添加。在这种情况下,您可以将所有方法作为静态方法添加到模型中。我不确定这是不是最好的办法。请注意,如果不传递数组参数,它将抛出一个错误。公共静态函数all($ar=[]){return self::where(['status_id'=>1])->get();}是的,这似乎就是我要找的。我将尝试全球范围的东西。是的,这似乎是我一直在寻找的。我将尝试全局范围的东西。我正在寻找一个解决方案,影响所有的方法,我已经作出。这样的话,我必须仔细研究所有的方法,然后一个一个地添加。我正在寻找一个能影响我已经做过的所有方法的解决方案。这样的话,我必须仔细研究所有的方法,并逐一添加。