在编写代码的时候为了,效率和失误,在带有merchant_id字段的表中,对对应的模型都使用了merchant_id相关的全局范围查询。
这个方法大致的内容如下:
public function scopeMerchantId($query){
$query->where('merchant_id',$merchant_id);
//判断商户是否已到期
if(Merchant::isExpire($merchant_id)){
throw new Exception('商户已到期')
}
}
在某些特定场景下,业务不需要判断merchant_id,就需要动态关闭掉它,这个时候我调用如下代码 Order::withoutGlobalScope()->find();
就发现了,以上的代码虽然sql语句确实没有出现【where('merchant_id',$merchant_id)】但是它其实还是会执行scope方法的,导致它会去执行查询//判断商户是否已到期这个逻辑,但是我使用withoutGlobalScope就是为了不让它去执行这个方法。在用TP5的时候用的同样的做法是没有问题,请问TP6如何去规避它,或者有什么更好的方法最佳答案
