📅  最后修改于: 2023-12-03 15:17:12.532000             🧑  作者: Mango
在Laravel中,Eloquent是用于处理数据库模型的一种优雅的方式。它可以用来执行诸如插入,更新和查询等各种操作。当你需要更新多条记录时,Eloquent也提供了简单的方法。
要更新多条记录,你可以使用Eloquent的update
方法。该方法需要一个数组作为参数,其中每个键表示要更新的列名,它的值是要更新的值。
DB::table('users')
->where('status', 1)
->update(['status' => 0]);
上面的代码将users
表中状态为1
的所有记录的status
列更新为0
。这种方法非常适用于更新大量数据,因为它只需要执行一次查询。
你也可以使用模型来批量更新记录。首先,你需要获取要更新的模型记录,之后对他们进行更改即可,最后使用saveMany
方法提交更改。
$users = User::where('status', 1)->get();
$users->each(function ($user) {
$user->status = 0;
});
$users->saveMany();
上面的代码将所有状态为1
的用户记录的状态更改为0
。这种方法使用了Eloquent的saveMany
方法保存一批记录。
如果你只需要更新表中的某个特定列,可以使用update
方法(这个方法将返回受影响的行数)。
User::where('status', 1)->update(['status' => 0]);
上面的代码将所有状态为1
的用户记录的status
列更新为0
。
有时,你只想更新符合特定条件的记录。在这种情况下,你可以使用when
方法来添加更新条件。
例如,下面的代码将更新users
表中的所有记录,如果登录时间在过去的三个月内,则将状态更改为0
。
User::query()
->when(now()->subMonths(3), function ($query) {
return $query->where('last_login_at', '>', now()->subMonths(3));
})
->update(['status' => 0]);
上面的代码使用了Laravel的查询构建器来构建查询。when
方法用于添加条件,当传入的值是true
时,它会将闭包中的查询添加到主查询中。在本例中,如果时间在过去的三个月内,则会添加一些查询条件。
Eloquent提供了简便的方法来更新多条记录。在本文中,我们已经了解了如何使用Eloquent的update
方法和使用模型批量更新记录。我们还谈到了如何使用条件更新记录,以查找符合特定条件的记录,然后对它们进行更改。