更新数据update()
这个方法可以更新单条或多条数据
// 更新单条记录
$data = ['name' => '张三', 'age' => 25, 'email' => 'zhangsan@example.com'];
Db::table('users')->where('id', 1)->update($data);
// 更新多条记录
$data = ['status' => 1];
Db::table('users')->where('age', '>', 18)->update($data);
// 使用多条件更新
$data = ['balance' => 100];
Db::table('accounts')
->where('user_id', 1)
->where('status', 'active')
->update($data);
返回影响的行数
更新特定的列值取反invert($column )
对数据库中的某个表进行更新操作,将指定的列的值取反,也可以配合where()来更新特定的行。具体来说,如果 $column 的值是 1,则更新后的值为 0;如果值是 0,则更新后的值为 1。这种逻辑通常用于实现“标记位”的逻辑,例如用于表示某个条目是否被“点赞”或“标记为已读”等。 返回影响行数
// 反转用户的激活状态
Db::table('users')->where('id', 1)->invert('is_active');
// 结果: UPDATE users SET is_active = !is_active WHERE id = 1
// 反转文章的发布状态
Db::table('articles')->where('slug', 'intro')->invert('is_published');
// 结果: UPDATE articles SET is_published = !is_published WHERE slug = 'intro'
自增更新inc()
根据设定的步长,自增数值,默认步长为1, 成功返回影响行数
// 用户登录次数+1
Db::table('users')->where('id', 1)->inc('login_count');
// 生成SQL: UPDATE users SET login_count = login_count + 1 WHERE id = 1
// 用户积分+5
Db::table('users')->where('id', 1)->inc('score', 5);
// 生成SQL: UPDATE users SET score = score + 5 WHERE id = 1
inc('hit')
inc('hit', 5)
自减更新dec()
根据设定的步长,自减数值,默认步长为1,成功返回影响行数
// 剩余尝试次数-1
Db::table('users')->where('id', 1)->dec('remaining_attempts');
// 生成SQL: UPDATE users SET remaining_attempts = remaining_attempts - 1 WHERE id = 1
// 商品库存-10
Db::table('products')->where('id', 1)->dec('stock', 10);
// 生成SQL: UPDATE products SET stock = stock - 10 WHERE id = 1
dec('hit')
dec('hit', 5)