Laravel增刪改查例項程式碼講解
阿新 • • 發佈:2019-01-09
1、表單提交(增)
(1)配置路由web.php
Route::post('/projects', '[email protected]')->name('project.store');
(2)html模板檔案裡這樣寫,提交到name=projects.update的路由
{{--{!! form::text('name', '$value', [$options]) !!} 引數名,引數值,bootstrap樣式(可以不寫)--}}
{!! Form::open(['route'=>'project.store', 'method'=>'POST', 'files'=>'true']) !!}
<div>
<div class="form-group">
{!! Form::label('name', '專案名稱:') !!}
{!! Form::text('name', '', ['class'=>'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('thumbnail', '專案縮圖:') !!}
{!! Form::file('thumbnail', ['class'=>'form-control-file']) !!}
</div>
<div>
{!! Form::submit('新建專案', ['class'=>'btn btn-primary']) !!}
<div>
</div>
{!! Form::close() !!}
(3)在ProjectsController裡新建store()方法
public function store(Request $request){
// 通過關係儲存資料,不用再單獨存user_id欄位,已經自動儲存了
$request->user()->projects()->create([
'name'=> $request->name,
'thumbnail'=> $request->thumbnail
]);
// 如果不通過關係,就需要手動新增user_id欄位
//Project::create([
// 'name'=> $request->name,
// 'thumbnail'=> $request->thumbnail,
// 'user_id'=> $request->user()->id
//]);
return '儲存成功';
}
2、表單提交(刪)
(1)配置路由web.php,攜帶引數project
Route::delete('/projects/{project}', ' [email protected]')->name('projects.destroy');
(2)html模板檔案裡這樣寫,提交到name=projects.destroy的路由,並且攜帶引數id
{!! Form::open(['route'=>['projects.destroy', $project->id], 'method'=>'DELETE']) !!}
<button type="submit" class="btn-default"><i class="fa fa-btn fa-times"></i></button>
{!! Form::close() !!}
(3)在ProjectsController裡新建destroy()方法
方式一:
public function destroy($id){ // 接收通過路由傳來的id
// Project::findOrFail($id)能夠找到id=$id的專案,再呼叫delete()方法刪除
Project::findOrFail($id)->delete();
// 刪除成功之後返回首頁
return back();
}
方式二:
// 當成Project表的例項$project來接收
public function destroy(Project $project){
// 框架會自動去Projects表裡刪除對應id的那一條資料(例項)
$project->delete();
return back();
}
3、表單提交(改)
(1)配置路由web.php,攜帶引數project
Route::patch('/projects/{project}', ' [email protected]')->name('projects.update');
(2)html模板檔案裡這樣寫,提交到name=projects.update的路由,並且攜帶引數id
{!! Form::model($project, ['route'=>['projects.update', $project->id],
'method'=>'PATCH', 'files'=>'true']) !!}
<div>
<div class="form-group">
{!! Form::label('name', '專案名稱:') !!}
{!! Form::text('name', null, ['class'=>'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('thumbnail', '專案縮圖:') !!}
{!! Form::file('thumbnail', ['class'=>'form-control-file']) !!}
</div>
<div class="form-group">
{!! Form::submit('編輯專案', ['class'=>'btn btn-primary']) !!}
</div>
</div>
{!! Form::close() !!}
(3)在ProjectsController裡新建update()方法
public function update(Request $request, $id){
$project = Project::findOrFail($id);
$project->name = $request->name;
if($request->hasFile('thumbnail')) {
// 儲存原始圖片
$thumb = $request->thumbnail;
$name = $thumb->hashName();
$thumb->storeAs('public/thumbs/original', $name);
$project->thumbnail = $name;
}
$project->save();
return back();
}
4、查
(1)配置路由web.php,輸入網址先走HomeController下的root()方法
Route::get('/', ' [email protected]');
(2)在HomeController裡新建root()方法
public function root()
{
// 查詢當前使用者建立的所有專案
$projects = request()->user()->projects()->get();
// 將查詢結果賦值給前端HTML頁面
return view('welcome', compact('projects'));
}
(3)模板檔案welcome.blade.php裡遍歷資料
@foreach($projects as $project)
{{ $project->name }}
@endforeach