
@作者 : SYFStrive
@博客首页 : HomePage
📜: THINK PHP
📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗
📌:觉得文章不错可以点点关注 👉:专栏连接🔗
👉 VUEJS(🔥) 👉 MYSQL(🔥) 👉 微信小程序(🔥) 👉 PHPMYSQL(🔥) 👉 UNIAPP开发(🔥) 
目录
- PHP LARAVEL 简介
 - PHP LARAVEL 构造器的排序分组.子查询
 - Select 排序分组
 - Select 子查询
 - PHP LARAVEL 构造器的JOIN 查询
 - PHP LARAVEL 构造器的增删改
 - 最后
 
                    ⡖⠒⠒⠒⠤⢄⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸   ⠀⠀⠀⡼⠀⠀⠀⠀ ⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢶⣲⡴⣗⣲⡦⢤⡏⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠉⠉⠓⠛⠿⢷⣶⣦⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠘⡇⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⠀⠀⠀⠀⠀⠀⠀⢰⠇⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⡴⠊⠉⠳⡄⠀⢀⣀⣀⡀⠀⣸⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠰⠆⣿⡞⠉⠀⠀⠉⠲⡏⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⢧⡀⣀⡴⠛⡇⠀⠈⠃⠀⠀⡗⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣱⠃⡴⠙⠢⠤⣀⠤⡾⠁⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⣇⡼⠁⠀⠀⠀⠀⢰⠃⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣸⢠⣉⣀⡴⠙⠀⠀⠀⣼⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⡏⠀⠈⠁⠀⠀⠀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣀⠤⠚⣶⡀⢠⠄⡰⠃⣠⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢀⣠⠔⣋⣷⣠⡞⠀⠉⠙⠛⠋⢩⡀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀
⠀⡏⢴⠋⠁⠀⣸⠁⠀⠀⠀⠀⠀ ⠀⣹⢦⣶⡛⠳⣄⠀⠀⠀⠀⠀
⠀⠙⣌⠳⣄⠀⡇   不能   ⡏⠀⠀  ⠈⠳⡌⣦⠀⠀⠀⠀
⠀⠀⠈⢳⣈⣻⡇   白嫖 ⢰⣇⣀⡠⠴⢊⡡⠋⠀⠀⠀⠀
⠀⠀⠀⠀⠳⢿⡇⠀⠀⠀⠀⠀⠀⢸⣻⣶⡶⠊⠁⠀⠀
⠀⠀⠀⠀⠀⢠⠟⠙⠓⠒⠒⠒⠒⢾⡛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⣠⠏⠀⣸⠏⠉⠉⠳⣄⠀⠙⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⡰⠃⠀⡴⠃⠀⠀⠀⠀⠈⢦⡀⠈⠳⡄⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣸⠳⣤⠎⠀⠀⠀⠀⠀⠀⠀⠀⠙⢄⡤⢯⡀⠀⠀⠀⠀⠀⠀
⠀⠐⡇⠸⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡆⢳⠀⠀⠀⠀⠀⠀
⠀⠀⠹⡄⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⠸⡆⠀⠀⠀⠀⠀
⠀⠀⠀⠹⡄⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡀⣧⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢹⡤⠳⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣷⠚⣆⠀⠀⠀⠀
⠀⠀⠀⡠⠊⠉⠉⢹⡀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡎⠉⠀⠙⢦⡀⠀
⠀⠀⠾⠤⠤⠶⠒⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠒⠲⠤⠽   
 
提示:以下是本篇文章正文内容
PHP LARAVEL 简介
- Laravel是一种流行的开源PHP Web应用程序框架,由Taylor Otwell在2011年创建并发布。它提供了一个简洁优雅的语法和丰富的功能集,旨在使Web开发过程更快速、简单和愉悦。
 
-  
MVC架构模式:Laravel采用了MVC(Model-View-Controller)架构模,将应用程序的逻辑分为不同的层,提高了代码的可维护性和可测试性。
 -  
简洁的语法和表达力:Laravel框架支持具有简洁而表达力的语法,使得编写清晰、易读、易维护的代码成为可能。
 -  
路由系统:它提供了一个强大且灵活的路由系统,通过简单的配置和代码即可定义Web应用程序的路由规则,实现URL到控制器的映射。
 -  
数据库抽象层:Laravel提供了一个简便的数据库抽象层,支持多种数据库系统,并通过Eloquent ORM提供了一种优雅的方法来与数据库进行交互。
 -  
权限和认证系统:Laravel提供了内置的身份验证和授权功能,使得实现用户身份验证、访问控制和权限管理变得简单和便捷。
 -  
缓存系统:Laravel支持多种缓存后端,包括文件、数据库、Memcached和Redis等,让你可以轻松地实现缓存数据,提升应用程序的性能。
 -  
强大的扩展性:Laravel通过Composer和Packagist等工具提供了丰富的扩展包生态系统,可以快速集成各种功能组件和第三方库,加快开发进程。
 -  
测试支持:Laravel鼓励编写和运行测试,提供了一套丰富的测试工具和断言,帮助开发者确保代码的质量和可靠性。
 
- 总的来说,Laravel框架以其易用性、优雅的语法、丰富的功能和强大的扩展性受到了广大开发者的喜爱。它提供了
 
PHP LARAVEL 构造器的排序分组.子查询
Select 排序分组
- 使用 whereColumn()方法实现两个字段相等的查询结果;
 
//判断两个相等的字段,同样支持 orWhereColumn()
//支持符号'create_time','>', 'update_time'
//支持符号支持数组多个字段格式['create_time','>', 'update_time']
$users = DB::table('users')
->whereColumn('create_time', 'update_time')
->get();
 
- 使用 orderBy()方法实现 desc 或 asc 排序功能。
 
//支持 orderByRaw 和 orderByDesc 倒序方法
$users = DB::table('users')
->orderBy('id', 'desc')
->get();
 
- 使用 latest()方法设置时间倒序来排,默认时间字段是 created_at;
 
//按照创建时间倒序排,默认字段 created_at
$users = DB::table('users')->latest('create_time')->toSql();
 
- 使用 inRandomOrder()方法来随机排序,得到一个随机列表;
 
//随机排序
$users = DB::table('users')->inRandomOrder()->get();
 
- 使用 skip()和 take()限制结果集,或使用 offset()和 limit();
 
//从第 3 条开始,显示 3 条
$users = DB::table('users')->skip(2)->take(3)->toSql();
$users = DB::table('users')->offset(2)->limit(3)->get();
 
- 使用 when()方法可以设置条件选择,执行相应的 SQL 语句;
 
//when 实现条件选择
$users = DB::table('users')->when(true, function ($query) {
	$query->where('id', 19);
}, function ($query) {
	$query->where('name', '小夜');
})->get();
 
Select 子查询
- 使用 whereExists() 方法实现一个子查询结果,返回相应的主查询;
 
//通过 books 表数据,查询到 users 表关联的所有用户
$users = DB::table('users')->whereExists(function ($query) {
    $query->selectRaw(1)
        ->from('books')
        ->whereRaw('laravel_books.user_id = laravel_users.id');
})->get();
return $users;
//whereRaw 这句也可以替代为: whereColumn('books.user_id','users.id');
//PS:select 1 from,一般用于子查询的手段,目的是减少开销,提升效率,深入请搜索;
$users = DB::table('users')->whereExists(function ($query) {
    $query->selectRaw(1)
        ->from('books')
        ->whereColumn('books.user_id','users.id');
})->get();
return $users;
 
- 也可以使用 where(字段,function())闭包,来实现一个子查询;
 
//id=子查询返回的 user_id
$users = DB::table('users')->where('id', function ($query) {
$query->select('user_id')
		->from('books')
		->whereColumn('books.user_id','users.id');
})->toSql();
 
PHP LARAVEL 构造器的JOIN 查询
- 使用 join 实现内联接的多表查询,比如三张表进行 inner join 查询;
 
$users = DB::table('users')
->join('books', 'users.id', '=', 'books.user_id')
->join('book1s', 'users.id', '=', 'books.user_id')
->select('users.id', 'users.name',
'books.name', 'book1s.name')
->get();
 
- 也可以使用 leftjoin 左连接或 rightjoin 右连接实现多表查询;
 
$users = DB::table('users')
    ->leftJoin('books', 'users.id', '=', 'books.user_id')
    ->rightjoin('book1s', 'users.id', '=', 'book1s.user_id')
    ->select('users.id', 'users.age', 'users.sex',
        'books.name', 'book1s.price')
    ->get();
return $users;
 
- 使用 crossjoin 交叉连接查询,会生成笛卡尔积,再用 distinct()取消重复;
 
$users = DB::table('users')
    ->crossJoin('books')
    ->select('name')
    ->distinct()
    ->get();
return $users;
 
- 如果你想要实现闭包查询,和 where 类似,只不过要用 on 和 orOn 方法;
 
$users = DB::table('users')
    ->join('books', function ($join) {
        //支持 orOn 连缀
        $join->on('users.id', '=', 'books.user_id');
    })->get();
return $users;
 
eg:on()方法后面如果想要再增加筛选条件,可以追加 where();
- 使用 joinSub 实现子连接查询,将对应的内容合并在一起输出;
//子连接查询 
 $query = DB::table('books')->selectRaw('user_id,price');
 $users = DB::table('users')->joinSub($query, 'books', function ($join) {
     $join->on('users.id', '=', 'books.user_id');
 })->get();
 return $users;
 
- 使用 union()或 unionAll()方法实现两个查询的合并操作;
 
//union 取消重复,unionAll 不取消重复
$query = DB::table('books');
$users = DB::table('books')
    ->union($query)
    ->get();
return $users;
 
PHP LARAVEL 构造器的增删改
- 使用 insert()方法可以新增一条或多条记录;
 
$users = DB::table('books')->insert([
    [
        'name' => '李白',
        'user_id' => 1,
        'price' => 18.8,
    ],
    [
        'name' => '李白',
        'user_id' => 1,
        'price' => 18.8,
    ]
]);
return json_encode($users);
 
- 使用 insertOrIgnore()方法,可以忽略重复插入数据的错误;
 
//忽略重复新增数据的错误
DB::table('books')->insertOrIgnore([
    'id' => 3,
    'name' => '李白',
    'user_id' => 1,
    'price' => 18.8,
]);
 
- 使用 insertGetId()方法,获取新增后的自增 ID;
 
//获取新增后返回的 ID
$id = DB::table('books')->insertGetId([
    'name' => '李白',
    'user_id' => 1,
    'price' => 18.8,
]);
return $id;
 
- 使用 update()方法,可以通过条件更新一条数据内容;
 
$result = DB::table('books')->where('id', 3)
    ->update([
        'name' => '小李白',
        'user_id' => 1,
        'price' => 1800.8,
    ]);
return $result;
 
- 使用 updateOrInsert()方法,可以先进行查找修改,如不存在,则新增;
 
//参数 1:修改的条件
 //参数 2:修改的内容(新增的内容)
$result = DB::table('books')->updateOrInsert(
    ['id' => 3],
    [
        'name' => '李x白',
        'user_id' => 1,
        'price' => 180.8,
    ]
);
return var_dump($result);
 
- 更新数据时,可以使用自增 increment()和自减 decrement()方法;
 
//默认自增/自减为 1,可设置
DB::table('books')->where('id', 3)->increment('price',666.66);
DB::table('books')->where('id', 3)->decrement('price',666.66);
 
- 使用 delete()删除数据,一般来说要加上 where 条件,否则清空;
 
//删除一条数据
$result = DB::table('books')->delete(4);
return $result;
$result = DB::table('books')->where('id', 4)->delete();
return $result;
//清空
$result = DB::table('books_copy1')->delete();
return $result;
$result = DB::table('books_copy1')->truncate();
echo $result;
 
最后
以上是个人学习 THINKPHP 的相关知识点,一点一滴的记录了下来,有问题请评论区指正,共同进步,这才是我写文章的原因之,如果这篇文章对您有帮助请三连支持一波






















