使用模型更新数据

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    = '[email protected]';
$res                 = $userModel->save();

//返回影响的行数
dump($res);

 3. 第三种方法

$userModel = new User;
$res       = $userModel->save([
    'email' => '[email protected]'
], function ($query) {
    $query->where('id', '<', '5');
});

// 如果想要过滤数据的话, 可以加上 ->allowField(true)
$userModel = new User;
$res       = $userModel->allowField(true)->save([
    'email' => '[email protected]'
], 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);
发布了88 篇原创文章 · 获赞 6 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/codipy/article/details/92810262