💨
【Laravel】Laravel8でModelFactoryのnamespaceを変更する
EloquentModel
のnamespace
を独自(App\Models
以外)にした時に、ModelFactory
のnamespaceもEloquentModel
のnamespace
に合わせた構造になっちゃうのでカスタマイズ。
そもそも、EloquentModel
とModelFactory
のnamespace
構造は合わせたほうがいいのかしら。
やり方
Illuminate\Database\Eloquent\Factories\HasFactory
Traitには拡張ポイントとして
-
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