質問: Laravel5.5でformの値をTableに保存する際、fill()メソッドを使いたいです。 formのname とTableのcolumn名は必ず一致させる必要がありますか? また、異なる名前を使用したい場合はどのように実装しますか? 「異なる名前を使用したい」理由は、 1つのフォームに会社情報登録用の「会社名」とユーザ情報登録用の「氏名」を詰め込んでいるためです。 formは、company_name, user_nameと定義しており、 DBは、companies.name, users.nameが存在している状態です。
回答: 更新したいTableのcolumn名がキーになっている配列を`fill()`に渡すことが出来ればいいだけので、「実装方法次第」かと思います。 例えば、 ``` function update(Request $request){ $user_data = $request->all(); User::find($user_data['id'])->fill($user_data)->save(); } ``` 送信されてきたデータをまるごと使うなら、 の中の入力欄のname属性はcolumn名に合わせておかないと更新されませんが、 ``` function update(Request $request){ $all = $request->all(); $user_data= [ 'name' => $all['user_name'], 'tel' => $all['user_tel'] ]; User::find($all['id'])->fill($user_data)->save(); } ``` 配列を`fill()`前に作成するなら、column名と同じである必要はないです。 「異なる名前を使用したい」理由次第では、他にも実装方法はありますので、 上記のどちらかが「絶対」というわけでもないですよ! ※コードは、ここで適当に書いたやつなので、スペルミス等あったらすみません^^;