イベントに申し込んだ人のリストを表示するページをlaravelで作成しています。
申し込み情報を複数まとめて論理削除するため、チェックボックスを使用しようと思っています。
データベースから申し込み情報を取ってきてテーブル表示、チェックボックスにチェックし、削除ボタンを押したら論理削除、という風にしたいです。
他の似たような質問や記事は拝見しましたが、うまく落とし込めませんでした。
論理削除の賛否は承知の上ですが、仕様上用いています。
php、laravelは触り始めてまだ2週間ほどの浅学者なため、知識が足りないところが多々ありますが、ご教授いただければ幸いです。
発生している問題・エラーメッセージ
削除ボタンを押しても論理削除が出来ていません。
おそらく配列がうまく取得できていないのだと思います。
該当のソースコード
html
1(テーブル部分のみ記述します) 2<tbody> 3 @foreach ($list as $row) 4 <tr> 5 <td id="delete"><input class="target" type="checkbox" name="delete[]" value="{{ $row->id }}"></td> 6 <td>{{ $row->event_no }}</td> 7 <td>{{ $row->name }}</td> 8 <td>{{ $row->email }}</td> 9 </tr> 10 @endforeach 11</tbody> 12 13//フォーム送信 14<form method="POST" action="{{ route('user.delete') }}" name="delete"> 15 @csrf 16 <input type="button"> 17</form>
Controller
1public function delete(Request $request) 2{ 3 //チェックボックスでチェックしたidを取得 4 $delete = array($request->input('delete')); 5 6 //チェックしたidで1件ずつ削除する 7 for($i=0; $i<count($delete); $i++){ 8 9 $this->service->delete($delete[$i]); 10 } 11 12return redirect(); 13}
Service
1public function delete($id) 2{ 3 関連テーブルの論理削除 4 DB::table('users') 5 ->where('id',$id) 6 ->update(['delete_flg' => 1]); 7}
usersテーブルは、idを一意キーとしています。
関係なさそうな部分は端折って記述しましたが、足りなければお教えいただければと思います。
###参考にしたサイト等
・チェックボックスの取得方法は以下を参考にしました。
https://it.becrazy.jp/article/laravel-request
回答1件
あなたの回答
tips
プレビュー