簡體   English   中英

Laravel表單模型綁定具有雙重一對一關系錯誤

[英]Laravel form model binding with double one-to-one relationship error

因此,經過一天的擺弄,我覺得自己有點碰壁,並且希望獲得一些指導。 我的數據庫中有一個相當普通的用戶表,其中每個用戶可以選擇2個地址(一個用於計費,一個用於接收)。 在我的表單中,這與表單模型綁定相當不錯,在這里我可以使用如下所示的Blade代碼生成適當的字段:

{{ Form::text('billing[city]') }}
{{ Form::text('receiving[city]') }}

通過類似的方式,我可以通過使用以下命令在控制器中查看結果:

$billing = $user->billing;
$billing->city = Input::get('billing.city');

$receiving = $user->receiving;
$receiving->city = Input::get('receiving.city');

現在的問題是,如果我分別保存所有3個模型,如$user->save(); $billing->save(); $receiving->save(); ,我將有3個獨立的錯誤組。 通常,這很好,因為我可以將它們合並到一個大的MessageBag中,但是在這種情況下,無論是來自帳單地址還是來自接收地址,任何地址中的任何錯誤都不會列出。 相反,我的錯誤將僅包含關鍵city而不是像我希望的那樣是billing.city

MessageBag類似乎不支持為所有內容添加前綴或類似內容的方法,並且對我而言,僅在現有類中添加一個方法似乎並不明智,因為如果我們決定這樣做,將會破壞我的錯誤在將來更新Laravel。

任何指針或幫助將不勝感激,我主要是使用這個項目來掌握Laravel,所以也歡迎一種截然不同的方法。

我對Ardent並不熟悉,但是也許將地址關聯起來並使用應該保存所有內容的push會把所有內容返回給您一個MessageBag。

// Create User
$user = new User;
$user->name = Input::get('name');
$user->email = Input::get('email');

// Create addresses
$billing = $user->billing;
$billing->city = Input::get('billing.city');

$receiving = $user->receiving;
$receiving->city = Input::get('receiving.city');

$user->address()->associate($billing);
$user->address()->associate($receiving);
$user->push();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM