1
Djangoには、「自動1対1」というコンセプトがあります。ここで、親を作成すると、通常はデフォルトまたはNULL値で子関係が自動的に追加されます。これは、あなたがそれと対話する前に関係が存在するかどうか疑問に思うことがないので、非常に便利です。Laravelの自動1対1モデル
Laravelにはこれを行う方法がありますか?
Djangoには、「自動1対1」というコンセプトがあります。ここで、親を作成すると、通常はデフォルトまたはNULL値で子関係が自動的に追加されます。これは、あなたがそれと対話する前に関係が存在するかどうか疑問に思うことがないので、非常に便利です。Laravelの自動1対1モデル
Laravelにはこれを行う方法がありますか?
Laravel 5.3.23以降、HasOne
の関係にはwithDefault()
メソッドが追加されました。だから、あなたのParent
クラスの関係定義で、あなたが持っているでしょう:
public function child()
{
return $this->hasOne(Child::class)->withDefault();
}
、あなたは親にchild
関係にアクセスしたときに子レコードが存在しない場合、あなたはChild
の新しいインスタンスを取得しますモデルnull
の代わりに。
新しいインスタンスにデフォルト値が入力されるようにする場合は、withDefault()
に属性の配列を渡すこともできます(例:withDefault(['name' => 'my child'])
)。
のように見えますが[明示的に定義する必要がありました(https://laravel.com/docs/5.3/eloquent-relationships#one-to-one) (http://laravel.io/forum/06-11-2014-how-to-save-eloquent-model-with-relations-in-one-go?page=1) - ちょっと古いかもしれませんが、ちょうど最初のリンクのdocs。 –
[Eloquentリレーションを持つNullオブジェクトパターン]の複製があります(http://stackoverflow.com/questions/33085339/null-object-pattern-with-eloquent-relations) – patricus