我有一些麻烦,因为我的查询在with (nolock)
子句之后没有from
指令。
因为这样,一些查询锁定数据库,然后没有人可以使用该系统。
如何使用with (nolock)
与Eloquent&查询生成器?
例如..在此查询中:
return static::with('campaignType')
->where('active', 1)
->get();
我想要以下结果:
select
*
from campaigns with (nolock)
inner join campaign_types with (nolock) on campaign_types.id = campaigns.campaign_type_id
where campaigns.active = 1
答案 0 :(得分:2)
以下是我如何处理雄辩(在Laravel 5.1和5.2上测试)
您需要在模型中添加范围:
public function scopeNoLock($query)
{
return $query->from(DB::raw(self::getTable() . ' with (nolock)'));
}
然后您可以将其称为
return Model::noLock()->get();
答案 1 :(得分:0)
简便方法:
/**
* @param $query
* @return $this
*/
public function scopeNoLock($query)
{
return $query->from($query->getQuery()->raw(self::getTable() . ' with (nolock)'));
}
答案 2 :(得分:0)
您可以这样设置“ with(nolock)”:
DB::table('campaigns')->lock('WITH(NOLOCK)')
答案 3 :(得分:0)
您也可以通过sharedLock
方法使用本机解决方案