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