update方法, save方法, saveAll() 方法, 只有save方法可以识别是否成功, 配置where使用.
1. update 静态方法, 一般结合 where 一起用, 如果参数中, 有主键的值, 则不需要.
$res = User::update([
'id' => 1,
'username' => '17771234'
]);
dump($res);
这样的方式, 没法判断是否更新成功. where 条件如果加的话, 放在第二个参数
$res = User::update([
'username' => '17771234'
], ['id' => 2]);
dump($res->toArray());
也支持闭包函数
$res = User::update([
'username' => '17771234'
], function ($query) {
$query->where('id', 'lt', 5);
});
还可以下面这样写
$res = User::where('id', '<' , 6)
->update([
'username' => '17777777',
]);
//返回影响的行数
dump($res);
2. save方法, 返回值是受影响的行数
$userModel = User::get(1);
$userModel->username = '123';
$userModel->email = '123@qq.com';
$res = $userModel->save();
//返回影响的行数
dump($res);
3. 第三种方法
$userModel = new User;
$res = $userModel->save([
'email' => '222@qq.com'
], function ($query) {
$query->where('id', '<', '5');
});
// 如果想要过滤数据的话, 可以加上 ->allowField(true)
$userModel = new User;
$res = $userModel->allowField(true)->save([
'email' => '222@qq.com'
], function ($query) {
$query->where('id', '<', '5');
});
// 可以用下面的方法,简单一点
$res = $manager->allowField(true)->save(input('post.'), ['mg_id' => $mg_id]);
4. 批量修改数据 saveAll(), 无法识别是否修改成功.
$res = $userModel->saveAll([
['id' => 1, 'username' => 1],
['id' => 2, 'username' => 2],
]);
//返回影响的行数
dump($res);
博客介绍了数据库更新的三种方法。update是静态方法,常结合where使用,无法判断更新是否成功;save方法可返回受影响行数,能识别是否成功;saveAll用于批量修改数据,但无法识别修改是否成功。
307

被折叠的 条评论
为什么被折叠?



