使用查询构造器更新数据
更新行中的内容
关于控制器和路由,请数据库操作之查询构造器
基本的更新
$num = DB::table('student')
// 即为where id = 1007
->where('id', 1007)
->update(['age' => 30]);
var_dump($num);
语法: DB::table('表名')->where('列名',筛选值)->update([ '列名' => '列值' ])
等价于:update student set age = 30 where id = 1007
laravel中where句的使用:https://learnku.com/docs/laravel/8.x/queries/9401#3c8626
调用where
最基本的方式是需要传递三个参数:第一个参数是列名,第二个参数是任意一个数据库系统支持的运算符,第三个是该列要比较的值。为了方便,如果你只是简单比较列值和给定数值是否相等,可以将数值直接作为where
方法的第二个参数
如果多个条件,还可以传递条件数组到where
函数中(更多请参见上方的链接):
$users = DB::table('users')->where([
['status', '=', '1'],
['subscribed', '<>', '1'],
])->get();
返回值就是受影响的行数 更新数据时候一定要带条件!
自增自减
自增
语法:DB::table('表名')->increment('列名',‘每次自增的值,默认是1’)
更新自增, 返回值也是受影响的行数,这里如果不加where,那么数据库中所有的行的age列中的值都会默认自动+1(默认值),那么最后返回的受影响行数就是表中行的数量。
$num = DB::table('student')->increment('age');
var_dump($num);
如果需要自增的数值是3:
$num = DB::table('student')->increment('age', 3);
var_dump($num);
自减
自减, 与自增相同,返回的都是受影响的行数。只需要将注意,自减的单词是decrement
$num = DB::table('student')->decrement('age');
$num = DB::table('student')->decrement('age', 3);
自增自减与where
$num = DB::table('student')
->where('id', 1004)
->decrement('age', 3);
var_dump($num);
让id=1004的列中的值自减3。
自增自减的同时修改其他列
$num = DB::table('student')
->where('id', 1004)
->decrement('age', 3, [ 'name' => 'jwa' ]);
var_dump($num);
如果要在自增自减的同时也修改其他字段,就需要在->decrement('列名', '自增自建的值', ['要修改的其他列名' => '值'])