TP5+Fastadmin常用的方法

时间:2023年07月02日

/

来源:网络

/

编辑:佚名

TP5 常用方法
1. where
php复制代码$where = [
    'name' => 'Tom',
    'age' => ['>', 20]
];
$result = Db::table('users')
          ->where($where)
          ->select();
// 等价于
$result = Db::table('users')
          ->where('name', 'Tom')
          ->where('age', '>', 20)
          ->select();
2. whereRaw
php复制代码$result = Db::table('users')
          ->whereRaw('age > ? and status = ?', [20, 1])
          ->select();
// 等价于
$result = Db::table('users')
          ->where('age', '>', 20)
          ->where('status', '=', 1)
          ->select();
3. whereBetween
php复制代码$result = Db::table('users')
          ->whereBetween('age', [20, 30])
          ->select();
4. whereNull
php复制代码$result = Db::table('users')
          ->whereNull('email')
          ->select();
// 等价于
$result = Db::table('users')
          ->where('email', 'NULL')
          ->select();
5. whereIn
php复制代码$result = Db::table('users') 
        ->whereIn('name', ['Tom', 'Jerry', 'Mike']) 
        ->select();
6. page
php复制代码// 该方法用于指定查询结果的分页条件,其参数为一个数字表示当前页数。
$result = Db::table('users')
          ->page(2)
          ->select();
// 等价于
$result = Db::table('users')
          ->limit(10, 10)
          ->select();
7. having
php复制代码// 查询年龄大于 20 的用户,且他们拥有的订单数不少于 10
// 该方法用于添加 HAVING 子句,与 WHERE 类似,但是主要用于聚合查询
$result = Db::table('users')
          ->join('orders', 'users.id=orders.user_id', 'LEFT')
          ->where('age', '>', 20)
          ->group('users.id')
          ->having('count(orders.id)', '>=', 10)
          ->select();
8. group
php复制代码// 查询每个城市的用户数和平均年龄
$result = Db::table('users')
          ->field('city, count(id) as count, avg(age) as avg_age')
          ->group('city')
          ->select();
9. 模糊查询
php复制代码// TODO 1 使用 `where` 方法的回调函数来添加多个查询条件。该回调函数会接收一个 `$query` 对象参数,可以在其中调用多个 `where` 方法实现多条件查询。需要注意的是,多个 `where` 方法之间的关系是 **AND** 关系,即所有条件都要满足。最后调用 `select` 方法执行查询,并返回结果数组。
$query = Db::table('user') // 指定查询的表
    ->where(function ($query) {
        $query->where('name', 'like', '张%') // 姓张
              ->where('phone', 'like', '156%') // 手机号以156开头
              ->where('gender', '=', '男') // 性别是男
              ->where('birthday', '>=', '2002-04-07 00:00:00') // 出生日期大于等于2002年4月7日
              ->where('birthday', '<', '2002-04-08 00:00:00'); // 出生日期小于2002年4月8日
    });
$data = $query->select(); // 执行查询操作,并返回结果数组
// TODO 2 先使用 `where` 方法的回调函数将多个查询条件组合成一个 `$where` 对象。然后在主查询中直接传入 `$where` 对象,一次性实现多条件查询。最后调用 `select` 方法执行查询,并返回结果数组。此时所有条件之间的关系也是 **AND** 关系,即所有条件都要满足
$where = function ($query) {
    $query->where('name', 'like', '张%') // 姓张
          ->where('phone', 'like', '156%') // 手机号以156开头
          ->where('gender', '=', '男') // 性别是男
          ->where('birthday', '>=', '2002-04-07 00:00:00') // 出生日期大于等于2002年4月7日
          ->where('birthday', '<', '2002-04-08 00:00:00'); // 出生日期小于2002年4月8日
};
$query = Db::table('user') ->where($where); // 将所有条件组合成一个 $where 对象,再一次性传入主查询中
$data = $query->select(); // 执行查询操作,并返回结果数组
// TODO 3 使用 `$where` 数组将多个查询条件存储起来。数组中的每个键值对分别代表一个查询条件,其键为查询字段名,其值为一个数组,其中第一个元素为比较运算符,第二个元素为比较的值。最后在主查询中直接传入 `$where` 数组,一次性实现多条件查询。需要注意的是,如果同一个字段有多个查询条件,后面的会覆盖前面的。最后调用 `select` 方法执行查询,并返回结果数组。
$where = [
    'name' => '张%', // 姓张
    'phone' => '156%', // 手机号以156开头
    'gender' => '男', // 性别是男
    'birthday' => ['>=', '2002-04-07 00:00:00'], // 出生日期大于等于2002年4月7日
    'birthday' => ['<', '2002-04-08 00:00:00'], // 出生日期小于2002年4月8日
];
$query = Db::table('user') ->where($where); // 直接将 $where 数组作为参数传入 where 方法中
$data = $query->select(); // 执行查询操作,并返回结果数组
Log 日志
1. 引入类: use think\Log;
2. 记录日志:
php复制代码// 通过Log类的record()方法,记录一条日志
Log::record('这是一条普通日志');
// 记录一个错误级别的日志,使用error()方法
Log::error('这是一条错误日志');
// getLastSql() 函数获取最后一个执行的 DELETE SQL 语句,并将其打印到日志文件中, db()全局函数,不需要填写表名
Log::error('数据操作失败:' . $e->getMessage() . ' SQL: ' . db()->getLastSql());
// 记录一个信息级别的日志,使用info()方法
Log::info('这是一条信息日志');
3. 配置日志:
php复制代码// 日志配置
return [
    // 默认日志记录方式,按照日期记录,每天一个日志文件
    'type'        => 'File',
    // 日志存储路径
    'path'        => '../runtime/logs/',
    // 日志记录级别,Debug级别将记录所有信息,包括Trace信息
    'level'       => ['error', 'notice', 'warning'],
    // 单个日志文件的大小限制,单位为MB
    'file_size'   => 10240
];
fastadmin的日志配置文件为config/log.php,存储在../runtime/logs/路径下
Validate 验证
1. 引入类: use think\Validate;
2. 定义验证规则:
php复制代码  private function handleData($param)
    {
        // TODO 对请求参数进行验证
        $validate = new Validate([
            'name|活动名称' => 'require',
            'amount|红包总额' => 'require|number|max:10',
        ]);
         // TODO 将参数中的各个值取出并保存在一个数组中,返回该数组
        $data = [
            'name' => $param['name'],
            'amount' => $param['amount'],
        ];
        return $data;
    } 
更多验证规则可以参考ThinkPHP5的官方文档:www.kancloud.cn/manual/thin…
3.  执行验证:
php复制代码    public function add()
    {
        // 实例化验证器对象,使用rules()方法返回的验证规则
        $validator = $this->handleData($param);
        // 获取请求参数
        // $params = input('post.');
        // $params = $this->request->isPost()
        $params = $this->request->param()
        // 执行验证
        if (!$validator->check($params))  return $this->error($validator->getError());
        // 验证通过,继续执行操作
        // ...
    }
上传 EXCEL
1.  引入excel类:use PhpOffice\PhpSpreadsheet\IOFactory;
2.  定义方法:
php复制代码public function uploadExcel()
    {
        $this->request->filter(['trim', 'strip_tags']);
        //  !非POST请求
        if (!$this->request->isPost()) return  $this->error('请求方式不正确');
        // 获取上传的文件
        $file = request()->file('file');
        // 判断文件是否上传成功
        if ($file) {
            // 上传文件并保存到指定目录
            $info = $file->validate(['ext' => 'xlsx,xls'])->move(ROOT_PATH . 'public' . DS . 'uploads');
            if ($info) {
                // 获取上传文件的路径
                $filePath = $info->getSaveName();
                // 使用PhpSpreadsheet库的IOFactory类来创建一个Xlsx格式的读取器,然后使用该读取器加载Excel文件并读取文件内容
                // 读取Excel文件内容
                $reader = IOFactory::createReader('Xlsx');
                $spreadsheet = $reader->load(ROOT_PATH . 'public' . DS . 'uploads' . DS . $filePath);
                $sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
                // 处理Excel文件内容并保存到数据库中
                foreach ($sheetData as $key => $value) {
                    // 跳过表头
                    if ($key == 1) continue;
                    // 跳过空行
                    if (empty($value['A'])) continue;
                    // 获取题目、选项和答案
                    $title = $value['A'];
                    $optionA = $value['B'];
                    $optionB = $value['C'];
                    $result = $value['F'];
                    // 将数据保存到数据库中
                    db('question_bank')->insert([
                        'title' => $title,
                        'option_A' => $optionA,
                        'option_B' => $optionB,
                        'result' => $result,
                    ]);
                }
                return $this->success('文件上传成功');
            } else {
                return $this->error('参数不能为空');
            }
        } else {
            $this->error();
        }
    }
猜你需要

豫ICP备2021026617号-1  豫公网安备:41172602000185   Copyright © 2021-2028 www.78moban.com/ All Rights Reserved

本站作品均来自互联网,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如有侵犯您的版权,请联系 1565229909#qq.com(把#改成@),我们将立即处理。