Laravel增删改查实例代码讲解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33867131/article/details/85777639
1、表单提交(增)
(1)配置路由web.php
Route::post('/projects', 'ProjectsController@store')->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}', 'ProjectsController@destroy')->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}', 'ProjectsController@update')->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('/', 'HomeController@root');
(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

猜你喜欢

转载自blog.csdn.net/qq_33867131/article/details/85777639