登录  /  注册
博主信息
博文 53
粉丝 3
评论 0
访问量 44724
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
laravel7中件间创建注册和触发及常用数据库操作方法总结
emagic
原创
1013人浏览过

0917作业

一、中件间创建、注册、触发过程

1.中间件的创建

  • App文件夹->Http文件夹->Middleware文件夹下创建中间件php文件

  • namespace写入命名空间(路径)

  • 引入以下两个依赖类库

    use Illuminate\Http\Request;
    use Closure;

  • 中间件无须继承某个特殊类,但是有固定方法名handle()和对应语句写法!!!

    中间件MyCheck.php示例文件

  1. <?php
  2. namespace App\Http\Middleware;
  3. use Illuminate\Http\Request;
  4. use Closure;
  5. // 中间件类,无须继承某个特殊类,但是有固定方法handle()
  6. class Mycheck{
  7. public function handle(Request $request,Closure $next){
  8. // 以上为固定写法句式,这样laravel会自定识别,除了$request可以略微改成$req等有意义的缩写,初学尽量不要随意改动
  9. // 代码段
  10. return $next($request);
  11. // 以上为固定写法句式,这样laravel会自定识别并允许继续往后运行
  12. }
  13. }

2.中间件的注册(kernel文件中)

  • App文件夹->Http文件夹->kernel文件中修改内容

  • protected $middleware 全局中间件

  • protected $middlewareGroups 中间件组

  • protected $routeMiddleware 路由中间件

  • 添加 key => 命名空间\中间件类名 就完成了注册

以简单的路由中间件为例,kernel文件中写入以下内容:

  1. // 注册自定义中间件
  2. // key => 命名空间\中间件类名::class
  3. 'mycheck' => \App\Http\Middleware\Mycheck::class,

3.中间件的触发

  • 因为在路由中间件中注册的,对应也会在路由中触发

路由web.php中加入中间件->middleware('mycheck') 这里写的是注册是定的key键值

  1. Route::get('index/rename', 'Login@rename')->middleware('mycheck');

这时访问index/rename,路由就会触发中间件代码

二、常用laravel数据库操作方法总结

laravel数据库操作,Controller控制器中需要引入DB类
use Illuminate\Support\Facades\DB;

1.原生方式

原生方式 场景特性
DB::insert(原生sql插入语句) 原生增
DB::delete(原生sql删除语句) 原生删
DB::update(原生sql更新语句) 原生改
DB::select(原生sql查询语句) 原生查

2.laravel查询结构器方式(链式查询)

链式区别与原生的是以DB::table('表名')->链式方法名1[->链式方法名2...]的形式操作数据库:

laravel查询结构器方法 场景特性
->get() 返回collection对象,查询所有
->toArray() 将返回collection对象转为数组
->all() 类似toArray()的结果,返回的是数组
->first() 返回第一个匹配的行
->value(‘字段’) 返回值,不含key键
->pluck(‘字段’,’自定义key字段列’) 可以自定义输出数组的key
->insert([[key1=>value1],[key2=>value2],[keyn=>valuen]]) 链式增
->insertGetId() 链式增并返回新增记录的id,仅用于单条插入
->delete(); 链式删,一定要加where限制,防止删库
->update([‘字段1’=>’值1’,’字段2’=>’值2’]) 链式改,一定要加where限制,防止数据覆盖
->select(‘字段1’,’字段2’,’字段n’) 链式查
->whereBetween(‘字段名’,[起条件,止条件]) 区间查询
->whereIn(‘查询字段名’,[条件数组]) 查询匹配数组的记录
->orWhere() 或条件查询
->join() 内联多表查询,会导致数据库响应慢,不建议使用
->toSql() 查看链式查询器转成的sql原生语句
  • 指定查询字段,可以在get(['field1','field2','fieldn'])指定,更常用的是加入一个链式select('field1','field2','fieldn')方法返回结果。注意get([])里面传参是多个字段名的数组,而select方法不是传数组

3.聚合查询(链式)

聚合查询 场景特性
->max(‘字段名’) 指定字段的最大值
->min(‘字段名’) 指定字段的最小值
->avg(‘字段名’) 指定字段的平均值
->sum(‘字段名’) 指定字段的数值求和
->count() 统计记录数,一般不用传参

查看链式查询器转成的sql原生语法

  • 因为链式查询组合会导致代码诊断复杂,使用toSql()方法可查看该链式转成最终的sql原生语句。可以根据场景及代码复制程度使用原生或者链式方式
  1. //查看链式查询器转成的sql原生语法
  2. public function rename()
  3. {
  4. $res = DB::table('xpcms_admin')->select('id','username as name','real_name as nickname' )->toSql();
  5. echo '<pre>';
  6. print_r($res);
  7. }
  8. // as 使用场景:接口中隐藏字段名称,用别名防止暴露真实字段名

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:注意与注册服务的区别
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学