2017-10-26 20 views
0

状態を使用せずに工場のデフォルトを上書きすることはできますか?laravelモデル工場出荷時の状態を無効にする

私のモデルから工場を生成するツールを使用しますが、いくつかの属性を変更したいと思います。私は使用できることを知っています

$factory->state(\App\User::class, 'moderator', function ... 

しかし、私はモデル作成ごとに状態を指定することなくそれをしたいと思います。ですから、工場内で定義何

$factory->state(\App\User::class, 'default', function ... 
+0

もっと詳しく説明できますか? – Maraboc

答えて

0

のようなものは、デフォルトの動作は、例えば、あなたが状態で、このデフォルトの動作をオーバーライドすることができ

$factory->define(App\User::class, function(Faker $faker) { 
    return [ 
     ... 
     'name' => 'Jon Snow', 
     ... 
    ]; 
}); 

例えば、ある

$factory->state(App\User::class, 'bad-guy', function (Faker $faker) { 
    return [ 
     'name' => 'Night King' 
    ] 
}; 

そして、たとえば、

のように、インスタンスを作成するときに最後に上書きできます。
+0

上記のツールは、最初のケースを生成し、既存のファクトリ定義を上書きします。したがって、デフォルトで適用されるオーバーライドが必要なので、ツールの出力をカスタマイズできます。私。私はfactory() - > create()を呼び出すとデフォルトで適用される状態が欲しい – Chris

+0

なぜツールで生成されたものをオーバーライドできないのですか?とにかくそれを無効にしたいのであれば、なぜそのツールを使用していますか?このツールにはオーバーライドを設定するオプションがありますか? – Lloople

+0

私はそれを使用して、データベースの列タイプに基づいて自動デフォルトを設定します。残念ながら、私はツールを変更することはできません。しかし私は別の解決策を見つけました。私は今デフォルトと呼ばれる状態を自動的に適用するcreate関数を持っています。私は工場を直接呼び出すのではなく、この関数を使用します – Chris

関連する問題