码迷,mamicode.com
首页 > 其他好文 > 详细

Laravel通过查询构造器实现复杂的查询语句

时间:2020-07-24 19:03:07      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:like   max   min   src   数组传参   update   一个   option   求和   

laravel 自带语法糖

通过value方法查询指定字段的值

$name = ‘bigcola‘;
$email = DB::table(‘users‘)->where(‘name‘,$name)->value(‘email‘);

通过exists方法判断某个字段值是否存在

$exists = DB::table(‘users‘)->where(‘name‘,$name)->exists();

如果存在,返回true,否则返回false。还有一个与之相对的方法doesntExist()

通过pluck方法构建关联数组

$users = DB::table(‘users‘)->where(‘id‘, ‘<‘, 10)->pluck(‘name‘,‘id‘);  	//第一个参数是值   第二个是键

技术图片

通过chunk方法将查询结果分块处理

有时候我们从数据库返回的结果集比较大,一次性进行处理可能会超过PHP内存限制,这时就可以借助chunk方法将其分割成多个组块处理

$names = [];
DB::table(‘users‘)->orderBy(‘id‘)->chunk(5, function ($users) use (&$names) {
    foreach ($users as $user) {
        $names[] = $user->name;
    }
});

聚合函数

$num = DB::table(‘users‘)->count();       # 计数    
$sum = DB::table(‘users‘)->sum(‘id‘);     # 求和   
$avg = DB::table(‘users‘)->avg(‘id‘);     # 平均值   
$min = DB::table(‘users‘)->min(‘id‘);     # 最小值   
$max = DB::table(‘users‘)->max(‘id‘);     # 最大值   

高级Where查询

基本查询

基本查询

使用where方法进行简单查询 ,第一个参数字段名,第二个参数运算符,第三个参数比较值

DB::table(‘posts‘)->where(‘views‘,0)->get();
DB::table(‘posts‘)->where(‘views‘,<>,0)->get();
DB::table(‘posts‘)->where(‘views‘,>,0)->get();

like查询

模糊查询

DB::table(‘posts‘)->where(‘title‘,‘like‘,‘laravle学院%‘)->get();

and查询

多个where条件

DB::table(‘posts‘)->where(‘id‘, ‘<‘, 10)->where(‘views‘, ‘>‘, 0)->get();

数组传参

DB::table(‘posts‘)->where([
    [‘id‘, ‘<‘, 10],
    [‘views‘, ‘>‘, 0]
])->get();

or查询

通过orWhere方法实现

DB::table(‘posts‘)->where(‘id‘, ‘<‘, 10)->orWhere(‘views‘, ‘>‘, 0)->get();

多个or查询也可以通过多个orWhere方法连接

between查询

通过使用whereBetween实现between查询

DB::table(‘users‘)->whereBetween(‘id‘,[5,10])->get();

与之相反的有 whereNotBetween

in查询

通过whereIn实现

DB::table(‘users‘)->whereIn(‘id‘,[1,5,6])->get();

whereIn的第二个参数不能为空数组,否则会报错,与之相对有whereNotIn

null查询

通过whereNull实现

DB::table(‘users‘)->whereNull(‘created_at‘)->get();

与之相对有whereNotNull

日期查询

DB::table(‘posts‘)->whereYear(‘created_at‘, ‘2018‘)->get();   # 年
DB::table(‘posts‘)->whereMonth(‘created_at‘, ‘11‘)->get();    # 月
DB::table(‘posts‘)->whereDay(‘created_at‘, ‘28‘)->get();      # 一个月的第几天
DB::table(‘posts‘)->whereDate(‘created_at‘, ‘2018-11-28‘)->get();  # 具体日期
DB::table(‘posts‘)->whereTime(‘created_at‘, ‘14:00‘)->get();  # 时间

这几个方法同时还支持 orWhereYearorWhereMonthorWhereDayorWhereDateorWhereTime

字段相等查询

字段之间比较

DB::table(‘posts‘)->whereColumn(‘updated_at‘, ‘>‘, ‘created_at‘)->get();

JSON查询

DB::table(‘users‘)
    ->where(‘options->language‘, ‘en‘)
    ->get();

如果属性字段是个数组,还支持通过 whereJsonContains 方法对数组进行包含查询:

DB::table(‘users‘)
    ->whereJsonContains(‘options->languages‘, ‘en_US‘)
    ->get();
    
DB::table(‘users‘)
    ->whereJsonContains(‘options->languages‘, [‘en_US‘, ‘zh_CN‘])
    ->get();

高级查询

参数分组

Laravel通过查询构造器实现复杂的查询语句

标签:like   max   min   src   数组传参   update   一个   option   求和   

原文地址:https://www.cnblogs.com/bigcola/p/13373263.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!