Laravel 1度に複数のデータを保存したい。(のやや発展版)
解決したいこと
リレーション先のテーブルに1度に複数のデータを保存したいと考えています。
以下条件の時、保存処理の書き方を教えていただきたいです。
・複数のチェックボックス(会社の選択)がある。
・チェック後に「追加」というボタンを押すと、新たにその会社の設立年を選択するselectタグが現れる。
・チェックされた会社(複数)とそれに対する設立年を紐づけて保存する。
・カラムは(company, established) = (string, string)
以下、コード例となります。突貫で書いたので、本番の環境とは異なります。例として足りない情報等ある場合は、ご指摘いただけますと幸いです。
// index.blade.php
<form action="" method="post">
<div>
<label>A社</label>
<input type="checkbox" name="" value="A社" />
<label>B社</label>
<input type="checkbox" name="" value="B社" />
<label>C社</label>
<input type="checkbox" name="" value="C社" />
<label>D社</label>
<input type="checkbox" name="" value="D社" />
<label>E社</label>
<input type="checkbox" name="" value="E社" />
<label>F社</label>
<input type="checkbox" name="" value="F社" />
<label>G社</label>
<input type="checkbox" name="" value="G社" />
<label>H社</label>
<input type="checkbox" name="" value="H社" />
<!-- preventDefault適応済み -->
<button>追加</button>
</div>
<!-- 「追加」を押したときに、チェックされた会社の設立年を選択するセレクトタグが出現。 -->
<!-- 実際の開発環境では、JSで上記ロジックを組んでありますが、今回知りたいのは保存処理なので、割愛させていただきました。 -->
<!-- 今回は、B社とD社とH社にチェックが入った想定です。上のチェックボックスと紐づけてテーブルに保存する方法をお伺いしたいです。 -->
<div>
<div class="company-established">
<span>B社</span>
<select name="" id="">
<option value="1980">1980年</option>
<option value="1981">1981年</option>
...
<option value="2022">2022年</option>
<option value="2023">2023年</option>
</select>
</div>
<div class="company-established">
<span>D社</span>
<select name="" id="">
<option value="1980">1980年</option>
<option value="1981">1981年</option>
...
<option value="2022">2022年</option>
<option value="2023">2023年</option>
</select>
</div>
<div class="company-established">
<span>H社</span>
<select name="" id="">
<option value="1980">1980年</option>
<option value="1981">1981年</option>
...
<option value="2022">2022年</option>
<option value="2023">2023年</option>
</select>
</div>
</div>
<button tyep="submit">送信</button>
</form>
以下、Controllerの保存処理部分になります。
// PostController.php
public function store(Request $request)
{
$post = new Post;
// ここの書き方を知りたい。
}
name属性の書き方、controllerでの保存処理、model内での必要なロジック等を教えていただきたいです。
理想としては、一度の送信で
[company | established]
[ B社 | 1984年 ]
[ D社 | 1998年 ]
[ H社 | 2016年 ]
というように保存されるようにしたいです。
質問に慣れていないということもあり、不足している情報や意味が分からない点等あればご指摘いただければと思います。
0