前提・実現したいこと
現在Laravel,phpを勉強中で勉強の一環としてタスクリストを作成しています。
追加したタスクリストの名前をタイトルで記述した内容で実装したいと考えております。
更新ボタンを押さずにタスク名を書き換えられるのは確認済みです。
タスク名を書き換えて更新ボタンを押した際に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null (SQL: update `tasks` set `name` = ?, `tasks`.`updated_at` = 2020-05-11 03:01:10 where `id` = 13)
該当のソースコード
html
1<!-- テーブル本体 --> 2 <tbody class="row"> 3 @foreach ($tasks as $task) 4 <tr> 5 <td class="table-text"> 6 <dl> 7 <dt>タスク名</dt> 8 <dd>{{ $task->name }}</dd> 9 </dl> 10 </td> 11 <td style="text-align: right; padding-top: 28px"> 12 <!-- タスク名編集 --> 13 <form action="{{ url('task/' . $task->id) }}" method="POST"> 14 15 @csrf 16 @method('PUT') 17 18 <button type="submit" class="btn btn-put"> 19 <i class="fas fa-sync-alt"></i> 更新 20 </button> 21 </form> 22 </td>
jquery
1 <script> 2 $(function($){ 3 $('dd').click(function(){ 4 if(!$(this).hasClass('on')){ 5 $(this).addClass('on'); 6 var txt = $(this).text(); 7 $(this).html('<input type="text" value="'+txt+'" />'); 8 } 9 }); 10 }); 11 </script>
php
1 /** 2 * タスク名変更 3 */ 4 Route::put('/task/{task}', function ($id , Request $request) { 5 $task = Task::find($id); 6 $task->name = $request->name; 7 $task->save(); 8 return redirect('/'); 9 }); 10
試したこと
その場編集を実装する前はinputタグでテキストボックスを作りそこに変更したい名前を入力して更新ボタンを押すと値が書き換わる
仕様にしておりこちらは上手くいきました。phpのコードはこの時のままにしてあります。
変更した点はテキストボックスを消してjqueryを追加しました。
補足情報
勉強を始めたばかりで説明が分かりづらい部分が多々あるかと思いますがご教授頂けると幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/11 04:23
2020/05/11 04:32
2020/05/11 04:49