1
在Django中有一個「Auto one-to-one」的概念,當您創建父級時,子級關係也會自動添加,通常使用默認值或空值。這可能非常有用,因爲在開始與之交互之前,您不必懷疑關係是否存在。Laravel中的自動一對一模型
Laravel是否有辦法做到這一點?
在Django中有一個「Auto one-to-one」的概念,當您創建父級時,子級關係也會自動添加,通常使用默認值或空值。這可能非常有用,因爲在開始與之交互之前,您不必懷疑關係是否存在。Laravel中的自動一對一模型
Laravel是否有辦法做到這一點?
從Laravel 5.3.23起,HasOne
關係增加了withDefault()
方法。所以,在你Parent
類的關係定義,你會:
public function child()
{
return $this->hasOne(Child::class)->withDefault();
}
現在,當你訪問父child
關係,如果沒有孩子的記錄,你會得到Child
的新實例模型而不是null
。
如果您希望新實例具有填充的默認值(例如withDefault(['name' => 'my child'])
),您還可以在withDefault()
中傳遞一組屬性。
看起來像沒有,必須[明確](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) - 可能有點過時,只要閱讀文檔在第一個鏈接。 –
[空對象模式與雄辯關係]的可能重複(http://stackoverflow.com/questions/33085339/null-object-pattern-with-eloquent-relations) – patricus