• Laravel 框架数据库配置&构造器的查询.分块.聚合 ⑤


    请添加图片描述

    @作者 : SYFStrive

     
    请添加图片描述

    @博客首页 : HomePage

    📜: THINK PHP

    📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗

    📌:觉得文章不错可以点点关注 👉:专栏连接🔗


    请添加图片描述
    相关专栏

    👉 VUEJS(🔥)
    👉 MYSQL(🔥)
    👉 微信小程序(🔥)
    👉 PHPMYSQL(🔥)
    👉 UNIAPP开发(🔥)


                        ⡖⠒⠒⠒⠤⢄⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸   ⠀⠀⠀⡼⠀⠀⠀⠀ ⠀
    ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢶⣲⡴⣗⣲⡦⢤⡏⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠉⠉⠓⠛⠿⢷⣶⣦⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠘⡇⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⠀⠀⠀⠀⠀⠀⠀⢰⠇⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⠀⡴⠊⠉⠳⡄⠀⢀⣀⣀⡀⠀⣸⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠰⠆⣿⡞⠉⠀⠀⠉⠲⡏⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⠈⢧⡀⣀⡴⠛⡇⠀⠈⠃⠀⠀⡗⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣱⠃⡴⠙⠢⠤⣀⠤⡾⠁⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⣇⡼⠁⠀⠀⠀⠀⢰⠃⠀⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⠀⣸⢠⣉⣀⡴⠙⠀⠀⠀⣼⠀⠀⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⠀⡏⠀⠈⠁⠀⠀⠀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀⠀⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⣀⠤⠚⣶⡀⢠⠄⡰⠃⣠⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀
    ⠀⢀⣠⠔⣋⣷⣠⡞⠀⠉⠙⠛⠋⢩⡀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀
    ⠀⡏⢴⠋⠁⠀⣸⠁⠀⠀⠀⠀⠀ ⠀⣹⢦⣶⡛⠳⣄⠀⠀⠀⠀⠀
    ⠀⠙⣌⠳⣄⠀⡇   不能   ⡏⠀⠀  ⠈⠳⡌⣦⠀⠀⠀⠀
    ⠀⠀⠈⢳⣈⣻⡇   白嫖 ⢰⣇⣀⡠⠴⢊⡡⠋⠀⠀⠀⠀
    ⠀⠀⠀⠀⠳⢿⡇⠀⠀⠀⠀⠀⠀⢸⣻⣶⡶⠊⠁⠀⠀
    ⠀⠀⠀⠀⠀⢠⠟⠙⠓⠒⠒⠒⠒⢾⡛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⣠⠏⠀⣸⠏⠉⠉⠳⣄⠀⠙⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀
    ⠀⠀⠀⡰⠃⠀⡴⠃⠀⠀⠀⠀⠈⢦⡀⠈⠳⡄⠀⠀⠀⠀⠀⠀⠀
    ⠀⠀⣸⠳⣤⠎⠀⠀⠀⠀⠀⠀⠀⠀⠙⢄⡤⢯⡀⠀⠀⠀⠀⠀⠀
    ⠀⠐⡇⠸⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡆⢳⠀⠀⠀⠀⠀⠀
    ⠀⠀⠹⡄⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⠸⡆⠀⠀⠀⠀⠀
    ⠀⠀⠀⠹⡄⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡀⣧⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⢹⡤⠳⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣷⠚⣆⠀⠀⠀⠀
    ⠀⠀⠀⡠⠊⠉⠉⢹⡀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡎⠉⠀⠙⢦⡀⠀
    ⠀⠀⠾⠤⠤⠶⠒⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠒⠲⠤⠽   
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    提示:以下是本篇文章正文内容

    PHP LARAVEL 简介

    • Laravel是一种流行的开源PHP Web应用程序框架,由Taylor Otwell在2011年创建并发布。它提供了一个简洁优雅的语法和丰富的功能集,旨在使Web开发过程更快速、简单和愉悦。
    1. MVC架构模式:Laravel采用了MVC(Model-View-Controller)架构模,将应用程序的逻辑分为不同的层,提高了代码的可维护性和可测试性。

    2. 简洁的语法和表达力:Laravel框架支持具有简洁而表达力的语法,使得编写清晰、易读、易维护的代码成为可能。

    3. 路由系统:它提供了一个强大且灵活的路由系统,通过简单的配置和代码即可定义Web应用程序的路由规则,实现URL到控制器的映射。

    4. 数据库抽象层:Laravel提供了一个简便的数据库抽象层,支持多种数据库系统,并通过Eloquent ORM提供了一种优雅的方法来与数据库进行交互。

    5. 权限和认证系统:Laravel提供了内置的身份验证和授权功能,使得实现用户身份验证、访问控制和权限管理变得简单和便捷。

    6. 缓存系统:Laravel支持多种缓存后端,包括文件、数据库、Memcached和Redis等,让你可以轻松地实现缓存数据,提升应用程序的性能。

    7. 强大的扩展性:Laravel通过Composer和Packagist等工具提供了丰富的扩展包生态系统,可以快速集成各种功能组件和第三方库,加快开发进程。

    8. 测试支持:Laravel鼓励编写和运行测试,提供了一套丰富的测试工具和断言,帮助开发者确保代码的质量和可靠性。

    • 总的来说,Laravel框架以其易用性、优雅的语法、丰富的功能和强大的扩展性受到了广大开发者的喜爱。它提供了

    PHP LARAVEL 数据库配置

       数据库配置

    • 数据库的配置在 config/database.php,如果是本地可以直接配置.env 文件;

    env 👇

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=laravel
    DB_USERNAME=root
    DB_PASSWORD=XXX@
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    database 👇

    'mysql' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'laravel'),
        'username' => env('DB_USERNAME', 'root'),
        'password' => env('DB_PASSWORD', 'XXX@'),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => 'laravel_',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        ]) : [],
    ],
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 我们可以直接创建一个新的控制器 DataController 来测试数据库部分

    php artisan make:controller DataController

    • 数据库有一个专用类 DB,可以用它来实现原生查询构造器查询
    //使用 DB 类的 select()方法执行原生 SQL
    $user = DB::select('select * from laravel_user');
    return $user;
    
    • 1
    • 2
    • 3
    • 查询构造器主要通过 DB 类的各种数据库操作方法来实现,比如选定一条;
    //这里省去了 laravel_,需要在 database.php 配置
    $user = DB::table('user')->find(19);
    return $user;
    
    • 1
    • 2
    • 3
    • 由于火狐浏览器自动将 JSON 显示的很美化,而 find()只返回对象;
    //这里省去了 laravel_,需要在 database.php 配置
    $user = DB::table('user')->find(19);
    return $user;
    
    • 1
    • 2
    • 3
    • 使用 Eloquent ORM 模型来操作数据库,使用命令在 Http 目录下创建模型;

    php artisan make:model APP/Http/Models/User //默认在 app 目录

    //使用 Eloquent ORM 构建
    $user = User::all();
    return $user;
    
    • 1
    • 2
    • 3
    1. 上面使用模型来操作数据后,报错提示数据表是复数:users;
    2. 而我们真实的数据库表为:laravel_user,为何会这样 ???
    3. 前缀可以在 database.php 修改添加:laravel_,最终变为:laravel_users;
    4. 由于模型编码规范要求数据表是复数,这里的复数并不是单纯加 s;
    5. 可能会加 es,可能会加 ies,也可能是 child 编程 children 之类的;
    6. 可以使用字符串助手:Str::plural()来判断英文单词的复数情况;
    return Str::plural('bus'); //buses
    return Str::plural('user'); //users
    return Str::plural('child'); //children
    
    • 1
    • 2
    • 3
    1. 你可以根据规范去更改数据表名称,或者 强制使用现有的数据表名;

    protected $table = 'user';

    PHP LARAVEL 构造器的查询 分块.聚合

       构造器的查询

    1. table()方法引入相应的表,get()方法可以查询当前表的所有数据;

    //获取全部结果
    $users = DB::table(‘users’)->get();

    1. first()方法,可以获取到第一条数据;

    //获取第一条数据
    $users = DB::table(‘users’)->first();

    1. value(字段名)方法,可以获取到第一条数据的指定字段的值;

    //获取第一条数据的 email 字段值
    $users = DB::table(‘users’)->value(‘email’);

    1. find(id)方法,可以获取指定 id 的一条数据;

    //通过 id 获取指定一条数据
    $users = DB::table(‘users’)->find(20);

    1. pluck(字段名)可以获取所有数据单列值的集合;

    //获取单列值的集合
    $users = DB::table(‘users’)->pluck(‘name’);
    $users = DB::table(‘users’)->pluck(‘name’, ‘email’);

       构造器的分块.聚合

    1. 如果你一次性处理成千上万条记录,防止读取出错,可以使用 chunk()
    方法://切割分块执行,每次读取 30 条,id 排序;
    DB::table('users')->orderBy('id','asc')->chunk(30, function ($users) {
        foreach ($users as $user) {
            echo json_encode($user);
        }
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 构造器查询提供了:count()、max()、min()、avg()和 sum()聚合查询;
    //聚合查询
    return DB::table('users')->count();
    return DB::table('users')->max('price');
    return DB::table('users')->avg('price');
    
    • 1
    • 2
    • 3
    • 4
    1. 构造器查询两个判断记录是否存在的方法:exists()和 doesntexists()方法;
    //判断是否存在
    return DB::table('users')->where('id', 19)->exists();
    return DB::table('users')->where('id', 18)->doesntExist();
    
    • 1
    • 2
    • 3

    eg:这里 DB::第一个使用静态,返回查询对象,然后使用->where 等各种查询方法,这些查询方法返回的还是查询对象,所以可以继续连缀操作。最后当遇到比如 👉 get()返回结果等方法时,停止连缀。所以,返回结果必须放在最后。

    最后

    以上是个人学习 THINKPHP 的相关知识点,一点一滴的记录了下来,有问题请评论区指正,共同进步,这才是我写文章的原因之,如果这篇文章对您有帮助请三连支持一波

  • 相关阅读:
    Bert:语言模型
    058_末晨曦Vue技术_过渡 & 动画之过渡的类名
    【毕业设计】基于javaEE+SSH+mysql的码头船只出行及配套货柜码放管理系统设计与实现(毕业论文+程序源码)——码头船只出行及配套货柜码放管理系统
    4、Linux内核的分析
    C++中的红黑树
    python json包
    Day2 速率相关的性能指标
    Unity 如何把UGUI做到极致的优化
    day01-Tomcat框架分析
    批量删除docker中tag为<none>的镜像
  • 原文地址:https://blog.csdn.net/m0_61490399/article/details/131873349