1. 程式人生 > >Laravel增刪改查例項程式碼講解

Laravel增刪改查例項程式碼講解

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