#やりたいこと
laravelを使用してTodorリストに削除機能を実装中です。
削除処理は出来たのですが、その後の要件を満たす為どのような実装をすればいいか悩んでいます。
①タスク削除時はIDが1から振り直される
②削除後、新たにタスクを追加するとIDが連番となっている
現在の実装ではidを全て消しても41〜となりオートインクリメントが働いている状態。
#やったこと
①orderByの実装
②
$items = DB::select('ALTER TABLE `tablename` auto_increment = 1');
の実装
②を行う前に全テーブルを削除しmigrateを行いました。
下記コードは②のコードになります。
Todo.php
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Todo extends Model { protected $table = 'Todos'; protected $guarded = array('id'); public static $rules = array( 'comment' => 'required' ); }
TodoController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests\CreateTaskRequest; use Illuminate\Support\Facades\DB; use App\Todo; class TodoController extends Controller { public function index(Request $request) { $items = Todo::all(); return view('Todos.index', ['items' => $items]); } public function create(CreateTaskRequest $request) { $todo = new Todo; $form = $request->all(); unset($form['_token']); $todo->timestamps = false; $todo->fill($form)->save(); $param = [ 'id' => $request->id, 'comment' => $request->comment, ]; return redirect('/Todo'); } public function delete(Request $request) { Todo::find($request->table)->delete(); $items = DB::select('ALTER TABLE `tablename` auto_increment = 1'); return redirect('/Todo'); } }
web.php
<?php /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/', function () { return view('welcome'); }); Route::get('/Todo', 'TodoController@index'); Route::post('/Todo', 'TodoController@create'); Route::group(['middleware' => ['web']], function () { Route::post('/Todo', 'TodoController@create'); }); Route::delete('/Todo/{table}', 'TodoController@delete');
view/Todos/index.blade.php
@extends('layouts.index') @section('title','Todoリスト') @section('menubar') @parent Todoリスト @endsection @section('content') <table> <tr> <th>ID</th> <th>コメント</th> <th>状態</th> </tr> @foreach ($items as $item) <tr> <td>{{$item->id}}</td> <td>{{$item->comment}}</td> <td>作業中</td> <td> <form action="{{ url('Todo/' . $item->id) }}" method="POST"> @csrf @method('DELETE') <button type="submit">削除</button> </form> </td> </tr> @endforeach </table> @endsection
回答1件
あなたの回答
tips
プレビュー