Fork me on GitHub

Laravel 增删查改

1
2
3
4
5
6
7
8
9
10
// 成功返回 true
// 失败报错
$res = DB::table('user')->insert([
"id" => "xxx",
"username" => "xxx",
]);
// 如果已设 id 为自增,新增一条数据并返回 id
$id = DB::table('user')->insertGetId([
"username" => "xxx",
]);

1
2
3
4
5
6
// 成功返回被删除的条数
// 失败返回0
$res = DB::table('user')->where('id', 'xxx')->delete();
$res = DB::table('user')->where('id', '<>', 'xxx')->delete();
// 清空表
->truncate();

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// select
->select('name', 'email')
->select('username', 'id as openid')->get() // 别名
$query = DB::table('users')->select('name'); // 拼接
$users = $query->addSelect('age')->get();
->distinct() // distinct

// where
->where('id', 'xxx') // 相当于 ->where('id', '=', 'xxx')
->where('id', 'like', '%xxx%')
->where('score', '>', 0.5)
->where('score', '>=', 0.5)
->where('score', '<>', 0.5)
->whereIn('id', ["xxx", "yyy"])
->whereNotIn('id', [1, 2, 3])
->whereNull('username')
->whereNotNull('username')
->orWhere('name', 'John') // or
->whereBetween('votes', [1, 100])
->whereNotBetween('votes', [1, 100])
->whereDate('created_at', '2018-12-28')
->whereMonth('created_at', '12')
->whereDay('created_at', '31')
->whereYear('created_at', '2018')
->whereTime('created_at', '=', '11:20:45')
->where([ // 多个条件
['id', '=', 'xxx'],
['score', '<>', '0.5'],
])
->where(function ($query) { // function 多用来实现 or
$query->where('votes', '>', 100)
->orWhere('title', '=', 'Admin');
})
->whereColumn('first_name', 'last_name') // 相当于 ->whereColumn('first_name', '=', 'last_name')
->whereColumn('updated_at', '>', 'created_at')
->whereColumn([ // 多个条件
['first_name', '=', 'last_name'],
['updated_at', '>', 'created_at']
])


// raw 简单计算、判断
->selectRaw('price * ? as price_with_tax', [1.0825])
->whereRaw('price > IF(state = "TX", ?, 100)', [200])
->groupBy('department')->havingRaw('SUM(price) > ?', [2500])
->orderByRaw('updated_at - created_at DESC')
// 注:
where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
https://www.cnblogs.com/xp796/p/5213880.html

// groupBy
->groupBy('level')
->having('level', '>=', 0)
->groupBy('first_name', 'status') // 二级分组

// order
->orderBy('id', 'desc')
->orderBy('id', 'asc')
->latest() // 相当于 ->orderBy('created_at', 'desc')
->oldest() // 相当于 ->orderBy('created_at', 'asc')
->latest('updated_at') // 相当于 ->orderBy('updated_at', 'desc')
->inRandomOrder() // 乱序

// 分页 两种写法
->offset(10)->limit(5)
->skip(10)->take(5)

// 结果
// 注: 返回的 item 为 stdClass,取值 $item->id
// stdClass -> array : $item = json_decode(json_encode($item), true);
->exists(); // 是否存在,true/false
->doesntExist(); // 是否不存在
->first(); // 取满足条件的第一条结果 成功返回该条记录,失败返回 null
->get(); // 满足条件的所有记录
->value('username'); // 取满足条件的第一条结果的某个字段 成功返回该字段,失败返回 null
->pluck('username'); // 取满足条件的所有记录的 username 数组 成功返回 username 数组,失败返回空数组
->count(); // 条数 || 0
->max('score'); // 最大值
->avg('score'); // 平均值

1
2
3
4
5
6
7
8
9
10
11
12
13
// 成功返回修改的条数
// 失败返回 0
$res = DB::table('user')
->where('id', 'xxx')
->update([
'phone' => 'xxx',
]);
// 点个赞 increment/decrement
->increment('votes');
->increment('votes', 5);
->decrement('votes');
->decrement('votes', 5);
->increment('votes', 1, ['name' => 'John']); // 相当于 ->where('name', 'John')->increment('votes');
-------------感谢您的阅读 有问题请留言(或mailto:frostbelt@sina.cn)-------------