我的User
模型與另外一個UserInformation
模型之間存在一對一的關係,在這個模型中我存儲了額外需要的信息,這些信息會使「普通」用戶表。流利地更新現有的與Laravel 5中的一對一關係
設置我的模型是這樣的:
# User.php
public function information()
{
return $this->hasOne(UserInformation::class);
}
# UserInformation.php
public function user()
{
$this->belongsTo(User::class);
}
我有一個個人資料頁面,用戶可以更新這兩個表的信息。
視圖有這樣的輸入:
<input name="email"> // is a field in the users-table
<input name="information[size]"> // is a field in the users-information table
我在不同的地點讀,我應該能救我的兩個User
模型及其關係在:
$user->fill($request->all())->save();
但是,這將引發出現以下錯誤:
preg_replace(): Parameter mismatch, pattern is a string while replacement is an array
所以我當前的解決方案如下所示:
auth()->user()
->fill($request->except('information'))
->save();
auth()->user()
->information
->fill($request->input('information'))
->save();
這樣做效果很好,但在我看來並不好。所以我的問題是:我怎樣才能清理代碼並一次性保存?
這不起作用,因爲'User'模型永遠不會被保存。用'guard'屬性關閉''except'方法正在工作,但我認爲除了看起來更乾淨。 – Tim