コンセプトの問題: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());
}
}