概念问题:
我在使用touches
属性时有一个非常简单的问题,即自动更新依赖模型上的时间戳;它正确地这样做了,但也应用了全局范围。
有什么办法可以关闭这个功能吗?或者专门要求自动 touches
忽略全局范围?
具体示例:更新成分模型时,应触及所有相关配方。这很好用,除了我们有一个globalScope
用于根据语言环境分离配方的方法,它在应用触摸时也会使用。
成分型号:
class Ingredient extends Model
{
protected $touches = ['recipes'];
public function recipes() {
return $this->belongsToMany(Recipe::class);
}
}
配方模型:
class Recipe extends Model
{
protected static function boot()
{
parent::boot();
static::addGlobalScope(new LocaleScope);
}
public function ingredients()
{
return $this->hasMany(Ingredient::class);
}
}
区域设置范围:
class LocaleScope implements Scope
{
public function apply(Builder $builder, Model $model)
{
$locale = app(Locale::class);
return $builder->where('locale', '=', $locale->getLocale());
}
}