
Laravel - 上手实现 - 增删改查
发布日期:2021-05-09 04:16:30
浏览次数:17
分类:博客文章
本文共 6069 字,大约阅读时间需要 20 分钟。
拿到一个框架,除了解框架,还要能实现基本的CURD操作。
添加
1、配置路由,指定添加页面;
// routes/web.php 中增加如下:// 添加页面、存放路径 Laravel7/resources/views/Users/add.blade.php// 视图文件默认以 .blade.php 结尾Route::get('/add', function(){ return view('Users.add');});
2、创建并编辑添加视图页面;
添加
3、配置路由绑定控制器和方法,用于执行添加操作;
// routes/web.php 中增加如下:// post 提交方式、视图层中 form 的 method// doAdd 提交地址、视图层中 form 的 actionRoute::post('/doAdd', 'UsersController@doAdd');
4、在控制器接收数据,调用模型层执行添加操作;返回成功或者失败;
控制器中方法:
/** * 添加 * @param Request * @return string */public function create(Request $request){ // 获取要提交的数据 $data['name'] = $request->input('name', ''); $data['pwd'] = $request->input('pwd', ''); // 调用模型层方法添加数据 $res = Users::addOne($data); // 判断是否添加成功 if (!$res) { // 注意: a 标签的 href 属性是指定的路由 return '添加失败!! 跳转至添加页面'; } return '添加成功!! 跳转至展示页面';}
模型层中的方法:
// 注意: 模型层需要指定与模型关联的数据表名// protected $table = 'users';/** * 添加一条数据 * @param array $data * @return booler */public static function addOne($data){ return self::insert($data);}
展示
1、配置路由绑定控制器和方法,用于获取要展示的数据;
// routes/web.php 中增加如下:// 展示数据Route::get('/show', 'UsersController@show');
2、在控制器中调用模型层执行查询操作,然后判断是否成功、成功则调用视图层展示数据 、失败则返回失败;
控制器中的方法:
/** * 展示 */public function show(){ // 调用模型层中的方法获取数据 $res = Users::getAll(); // 判断是否获取成功 if (!$res) { return '数据库暂时没有数据!!'; } // 成功、通过 view 方法发送数据到 视图文件 return view('Users.show', ['res' => $res]);}
模型层中的方法:
/** * 获取所有的数据 * @return array */public static function getAll(){ return self::get();}
3、编辑视图层文件,通过 foreach 展示数据;
展示 展示 分页展示
ID | NAME | PWD | STATUS | LAST LOGIN |
{{ $v->id }} | {{ $v->name }} | {{ $v->pwd }} | {{ $v->status }} | {{ $v->last }} |
分页展示
1、配置路由绑定控制器和方法,用于获取要展示的数据;
// routes/web.php 中增加如下:// 展示数据Route::get('/page', 'UsersController@page');
2、在控制器中调用模型层执行查询操作,然后判断是否成功,成功则调用视图层展示数据 ,失败则返回失败;
控制器中方法:
/** * 分页展示 */public function page(){ // 调用模型层中的方法获取数据 $res = Users::page(); // 判断是否获取成功 if (!$res) { return '数据库暂时没有数据!!'; } // 成功、通过 view 方法发送数据到 视图文件 return view('Users.page', ['res' => $res]);}
模型层中方法:
/** * 分页展示 * @return array */public static function page(){ // paginate 方法会自动根据用户正在查看的页面来设置限制和偏移量 // 5 是每页显示条数 return self::paginate(5);}
3、编辑视图层文件,通过 foreach 展示数据;
分页展示 分页展示 普通展示
ID | NAME | PWD | STATUS | LAST LOGIN | ACTION |
{{ $v->id }} | {{ $v->name }} | {{ $v->pwd }} | {{ $v->status }} | {{ $v->last }} | 修改 删除 |
{{ $res->links() }} |
删除
1、在展示的视图文件中增加删除链接,指定删除的路由;
编辑展示的视图文件
// 视图文件中增加删除链接// del 执行删除的路由删除
编辑路由文件:
// 路由文件中增加如下删除路由Route::get('/del', 'UsersController@del');
2、在控制器接收数据,调用模型执行删除操作,然后判断是否成功,成功则返回成功 ,失败则返回失败;
控制器中方法:
/** * 删除 */public function del(Request $request){ // 接收数据 ID $where['id'] = $request->input('id', 0 ); // 调用模型层中的删除方法 $res = Users::del($where); // 判断执行结果 if (!$res) { return '删除失败!! 跳转至展示页面'; } return '删除成功!! 跳转至展示页面';}
模型层中方法:
/** * 删除 * @param array $where * @return booler */public static function del($where){ return self::where($where)->delete();}
修改
1、在展示的视图文件中增加修改链接,指定获取要修改的数据的路由;
编辑展示的视图文件
// 视图文件中增加修改链接// upd 执行修改的路由修改
编辑路由文件:
// 路由文件中增加如下删除路由Route::get('/upd', 'UsersController@upd');
2、在控制器接收数据,调用模型获取数据,然后发送数据到视图文件;
控制器中方法:
/** * 获取要进行修改的数据 */public function upd(Request $request){ // 接收数据 ID $where['id'] = $request->input('id', 0); // 调用模型层中的获取一条数据的方法 $res = Users::getOne($where); // 判断执行结果 if (!$res) { return '数据获取失败!! 跳转至展示页面'; } // 成功、通过 view 方法发送数据到 视图文件 return view('Users.upd', ['res' => $res]);}
模型层中方法:
/** * 查询一条数据 * @param array $where * @return array */public static function getOne($where){ // return self::where( $where )->first(); return self::firstWhere($where);}
3、将发送来的的数据展示到修改页面;
修改
4、配置路由绑定控制器和方法,用于执行修改操作;
// 执行修改// post 提交方式、视图层中 form 的 method// doUpd 提交地址、视图层中 form 的 actionRoute::post('/doUpd', 'UsersController@doUpd' );
5、在控制器接收数据,调用模型执行修改操作,然后判断是否成功,成功则返回成功 ,失败则返回失败;
控制器中方法:
/** * 执行修改 */public function doUpd(Request $request){ // 接收数据 ID 作为修改的条件 $where['id'] = $request->input('id', 0); // 接收其他数据 作为要修改的数据 $data['name'] = $request->input( 'name', '' ); $data['pwd'] = $request->input( 'pwd', '' ); // 调用模型层中的修改方法 $res = Users::upd( $where, $data ); // 判断执行结果 if (!$res) { return '修改失败!! 跳转至展示页面'; } return '修改成功!! 跳转至展示页面';}
模型层中方法:
/** * 修改 * @param array $where * @param array $data * @return booler */public static function upd($where, $data){ return self::where($where)->update($data);}
常见错误
1、Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException No message
具体截图:
解决:查看路由的请求方式和提交请求的方式是否一致。2、Illuminate \ Database \ QueryException (42S02)
具体截图:
解决:查看模型层是否指定与模型关联的数据表发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月06日 05时56分18秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
go等待N个线程完成操作总结
2019-03-06
Python 之网络式编程
2019-03-06
python去除字符串中的特殊字符(爬虫存储数据时会遇到不能作为文件名的字符串)
2019-03-06
SpringCloud微服务(03):Hystrix组件,实现服务熔断
2019-03-06
网站故障公告1:使用阿里云RDS之后一个让人欲哭无泪的下午
2019-03-06
[网站公告]又拍云API故障造成图片无法上传(已恢复)
2019-03-06
上周热点回顾(6.9-6.15)
2019-03-06
.NET跨平台之旅:借助ASP.NET 5 Beta5的新特性显示CLR与操作系统信息
2019-03-06
上周热点回顾(5.9-5.15)
2019-03-06
上周热点回顾(1.23-1.29)
2019-03-06
【故障公告】10:30-10:45 左右 docker swarm 集群节点问题引发故障
2019-03-06
Python 简明教程 --- 20,Python 类中的属性与方法
2019-03-06
QBlog V2.5 源码开放下载(ASP.NET 番外系列之开端)
2019-03-06
稀疏数组
2019-03-06
Android MediaPlayer setDataSource failed
2019-03-06
虚拟机搭建hadoop环境
2019-03-06
DataStax Bulk Loader教程(四)
2019-03-06
Hibernate入门(四)---------一级缓存
2019-03-06
[Python学习笔记]组织文件
2019-03-06