Я не уверен, есть ли способ глобально добавить Scope.
В моем конкретном приложении нам пришлось добавить больше ответственности к нашим моделям.Таким образом, мы создали класс BaseModel
, который расширяет Illuminate\Database\Eloquent\Model
.
Laravel. Все новые модели затем расширяют BaseModel
вместо класса Laravel.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class BaseModel extends Model
{
protected static function boot()
{
parent::boot();
static::addGlobalScope(new TeamScope);
}
}
Например:
<?php
namespace App;
class Attribute extends BaseModel
{
}
У вас также может быть черта, которую вы можете просто использовать для добавления этой области в вашу модель.Например:
trait HasTeamScope
{
protected static function boot()
{
parent::boot();
static::addGlobalScope(new TeamScope);
}
}
}
... и тогда вы можете легко использовать это повторно в своей модели.
Например:
<?php
namespace App;
class Attribute extends BaseModel
{
use HasTeamScope;
}
Теперь, основываясь на вашем вопросе, вы можете также забыть расширить BaseModel в первом случае или добавить Trait во второй при каждом создании новогомодель.
Чтобы решить эту проблему, вы можете легко создать новую команду для создания моделей , которая будет использовать вашу собственную заглушку (которая расширяет BaseModel или добавляет черту всякий раз, когда вы создаете новую модель)