0917作业
App文件夹->Http文件夹->Middleware文件夹下创建中间件php文件
namespace写入命名空间(路径)
引入以下两个依赖类库
use Illuminate\Http\Request;
use Closure;
中间件无须继承某个特殊类,但是有固定方法名handle()和对应语句写法!!!
中间件MyCheck.php示例文件
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Closure;
// 中间件类,无须继承某个特殊类,但是有固定方法handle()
class Mycheck{
public function handle(Request $request,Closure $next){
// 以上为固定写法句式,这样laravel会自定识别,除了$request可以略微改成$req等有意义的缩写,初学尽量不要随意改动
// 代码段
return $next($request);
// 以上为固定写法句式,这样laravel会自定识别并允许继续往后运行
}
}
App文件夹->Http文件夹->kernel文件中修改内容
protected $middleware 全局中间件
protected $middlewareGroups 中间件组
protected $routeMiddleware 路由中间件
添加 key => 命名空间\中间件类名 就完成了注册
以简单的路由中间件为例,kernel文件中写入以下内容:
// 注册自定义中间件
// key => 命名空间\中间件类名::class
'mycheck' => \App\Http\Middleware\Mycheck::class,
路由web.php中加入中间件->middleware('mycheck')
这里写的是注册是定的key键值
Route::get('index/rename', 'Login@rename')->middleware('mycheck');
这时访问index/rename,路由就会触发中间件代码
laravel数据库操作,Controller控制器中需要引入DB类use Illuminate\Support\Facades\DB;
原生方式 | 场景特性 |
---|---|
DB::insert(原生sql插入语句) | 原生增 |
DB::delete(原生sql删除语句) | 原生删 |
DB::update(原生sql更新语句) | 原生改 |
DB::select(原生sql查询语句) | 原生查 |
链式区别与原生的是以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方法不是传数组
聚合查询 | 场景特性 |
---|---|
->max(‘字段名’) | 指定字段的最大值 |
->min(‘字段名’) | 指定字段的最小值 |
->avg(‘字段名’) | 指定字段的平均值 |
->sum(‘字段名’) | 指定字段的数值求和 |
->count() | 统计记录数,一般不用传参 |
因为链式查询组合会导致代码诊断复杂,使用toSql()方法可查看该链式转成最终的sql原生语句。可以根据场景及代码复制程度使用原生或者链式方式
//查看链式查询器转成的sql原生语法
public function rename()
{
$res = DB::table('xpcms_admin')->select('id','username as name','real_name as nickname' )->toSql();
echo '<pre>';
print_r($res);
}
// as 使用场景:接口中隐藏字段名称,用别名防止暴露真实字段名
Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号