TP5 常用方法

简介: TP5 常用方法

TP5 常用方法

1. where
$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
$result = Db::table('users')
          ->whereRaw('age > ? and status = ?', [20, 1])
          ->select();
// 等价于
$result = Db::table('users')
          ->where('age', '>', 20)
          ->where('status', '=', 1)
          ->select();
3. whereBetween
$result = Db::table('users')
          ->whereBetween('age', [20, 30])
          ->select();
4. whereNull
$result = Db::table('users')
          ->whereNull('email')
          ->select();
// 等价于
$result = Db::table('users')
          ->where('email', 'NULL')
          ->select();
5. whereIn
$result = Db::table('users') 
        ->whereIn('name', ['Tom', 'Jerry', 'Mike']) 
        ->select();
6. page
// 该方法用于指定查询结果的分页条件,其参数为一个数字表示当前页数。
$result = Db::table('users')
          ->page(2)
          ->select();
// 等价于
$result = Db::table('users')
          ->limit(10, 10)
          ->select();
7. having
// 查询年龄大于 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
// 查询每个城市的用户数和平均年龄
$result = Db::table('users')
          ->field('city, count(id) as count, avg(age) as avg_age')
          ->group('city')
          ->select();
9. 模糊查询
// 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(); // 执行查询操作,并返回结果数组
相关文章
|
6月前
|
Java 容器
2分钟学习ThreadLocal的Lambda构造方式
2分钟学习ThreadLocal的Lambda构造方式
30 0
|
程序员 调度
多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法(二)
多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法
|
前端开发 Java 程序员
多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法(一)
多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法
|
7月前
|
资源调度 调度
Thread的基本方法(3)-yield方法的分析与实例说明
Thread的基本方法(3)-yield方法的分析与实例说明
81 0
生成器函数, re中函数的使用,模拟range的功能
1、生成1-10使用next(generator)方法获取1-10 2、使用for循环获取
64 0
|
中间件 PHP
tp5与tp6的区别--详解
tp5与tp6的区别--详解
288 0
|
监控 Java Nacos
dynamic-tp动态线程池
1)如果要实现一个动态线程池,首先需要考虑的是将线程池的相关配置信息外置。这样出现问题的时候,能够基于配置修改,实现热部署。修改配置后,就能生效。因此,可以考虑的配置方式有多种:nacos、apollo、zookeeper、consul、etcd等。 2)如果线程池出现问题或者完成修改后,能够基于监控的信息,进行通知和告警。这样就需要考虑通知和告警的方式的多样性:比如基于钉钉、微信、飞书、电子邮件等渠道进行通知和告警。
2238 0
dynamic-tp动态线程池
|
JavaScript 前端开发 API
for 循环不是目的,map 映射更有意义!【FP探究】
在 JavaScript 中,由于 Function 本质也是对象(这与 Haskell 中【函数的本质是值】思路一致),所以我们可以把 Function 作为参数来进行传递!
【TP5】关于toArray()的用法以及注意点
【TP5】关于toArray()的用法以及注意点
463 0
【TP5】关于toArray()的用法以及注意点