LaravelのHasManyのGlobalScope(グローバルスコープ)を外す。
モデルの基本的なwhere条件など(削除フラグetc)をboot()メソッドで addGlobalScopeで追加できるまではよかったが、hasManyで引っ張る時に removeGlobalScopeなんて関数がなく困った。
以下のようにhasManyを別々にして対応。もう少しスマートにできないかな。
<?php
class User extends Model
{
protected static function boot()
{
parent::boot();
static::addGlobalScope('スコープ名', function(Builder $builder) {
$builder->where('delete_flg', 0);
});
}
public function post(){
return $this->hasMany(
"App\Post",
'id',
'user_id'
);
}
public function postAll(){
return $this->hasMany(
"App\Post",
'id',
'user_id'
)->withoutGlobalScope('スコープ名');
}
}
コメントを残す