# [laravel]laravel basic CRUD ###### tags: `laravel`,`laravel5.8` ## READ ```php //method1 $todos= Todo::get(); //method2 $todos = Todo::OrderBy('created_at', 'desc')->get(); //method1 $todo = Todo::find($id); //method2 $todo = Todo::where('id',$id)->first(); ``` ## CREATE ```php $todo = Todo::create($request->all()); $todo = $todo->refresh(); ``` ## EDIT ```php <form class="form-horizontal" action="{{route('user.update', $user)}}" method="POST"> @csrf @method('PATCH') <div class="card-body"> <div class="form-group row"> <label for="name" class="col-sm-2 col-form-label">用戶名稱</label> <div class="col-sm-10"> <input type="text" class="form-control @error('name') is-invalid @enderror" name="name" id="name" value="{{ $user->name }}"> @error('name') <div class="text-danger text-left">{{ $message }}</div> @enderror </div> </div> <h5 class="mt-4">修改密碼(若不需修改請空白)</h5> <hr> <div class="form-group row"> <label for="password" class="col-sm-2 col-form-label">新密碼</label> <div class="col-sm-10"> <input type="password" class="form-control @error('password') is-invalid @enderror" name="password" id="password"> @error('password') <div class="text-danger text-left">{{ $message }}</div> @enderror </div> </div> <div class="form-group row"> <label for="password_confirmation" class="col-sm-2 col-form-label">確認新密碼</label> <div class="col-sm-10"> <input type="password" class="form-control @error('password') is-invalid @enderror" name="password_confirmation" id="password_confirmation"> </div> </div> </div> <!-- /.card-body --> <div class="card-footer d-flex"> <button type="submit" class="btn btn-success">修改</button> <a href="{{ route('user.index') }}" class="btn btn-secondary ml-2">取消</a> </div> <!-- /.card-footer --> </form> ``` ## DELETE front-end ```htmlmixed! <form method="POST" action="{{ route('todo.destroy',$item['id']) }}" class="mx-1"> @csrf @method("DELETE") <button type="submit" onclick="return confirm('即將刪除,是否確定?')" class="btn btn-danger"> <i class="fas fa-trash-alt"></i> </button> </form> ``` back-end ```php ... public function destroy($id) { // https://laravel.com/docs/5.8/eloquent#deleting-models $todo=Todo::find($id); $todo->delete(); return back(); } ... ``` ## UPDATE ```php public function update(Request $request, $id) { $name = $request->name; $user=User::find($id); $is_password_input_blank = 1; $array_validate = [ 'name' => "required|max:255|unique:users,name,$user->id,id", 'password' => 'required|min:3|confirmed', ]; // 若用戶密碼空白則不修改密碼 if (empty(trim($request->password)) == 1) { unset($array_validate['password']); $is_password_input_blank = 0; } $validator = Validator::make( $request->all(), $array_validate, [ // 自訂錯誤訊息 'name.required' => '請輸入:attribute', 'name.unique' => "用戶名稱已存在", 'password.required' => '請輸入:attribute', 'password.confirmed' => ':attribute欄位不一致', ], [ // 自定欄位在錯誤訊息中的顯示名稱 'name' => '姓名', 'password' => '密碼', ] ); if ($validator->fails()) { //回傳錯誤並重新導向 //前端網頁要加上相關語法 return redirect(route('user.edit',$user)) ->withErrors($validator) ->withInput(); } else { User::find($id)->update(['name'=>$name]); if($is_password_input_blank == 1){ User::find($id)->update(['password'=>Hash::make($request->password)]); } return redirect('/user/user')->with([ 'success'=>"用戶'$request->name'已修改" ]); } } ```