💨
【Laravel】Laravel8でModelFactoryのnamespaceを変更する
EloquentModelのnamespaceを独自(App\Models以外)にした時に、ModelFactoryのnamespaceもEloquentModelのnamespaceに合わせた構造になっちゃうのでカスタマイズ。
そもそも、EloquentModelとModelFactoryのnamespace構造は合わせたほうがいいのかしら。
やり方
Illuminate\Database\Eloquent\Factories\HasFactoryTraitには拡張ポイントとして
-
protected static function newFactory()
があったので、そこでEloquentModelごとに利用するModelFactoryをreturnしてあげる。
class Task extends Model
{
use HasFactory;
// HasFactoryのnewFactory()をオーバーライド
protected static function newFactory()
{
return app()->make(TasksFactory::class);
}
}
改善ポイント
- そもそも
EloquentModelとModelFactoryのnamespace構造は揃えたほうがいいの? -
ModelFactoryのnamespaceがルール化出来ているのであれば別の定義方法があるのでは?-
EloquentModelごとに定義するのが冗長
-
Discussion