laravel - 一次更新多行 Laravel Eloquent
问题描述
我有products
具有以下结构的表。
id | name | promote
其中列promote
是布尔类型。
我想将boolean
列的值设置为1
选定的行并设置0
为非选定的行。我在控制器中有以下代码来处理此查询。
$yes = Tour::whereIn('id', $request->promote)->get();
$no = Tour::whereNotIn('id', $request->promote)->get();
foreach ($yes as $item) {
$item->promote = 1;
$item->save();
}
foreach ($no as $item) {
$item->promote = 0;
$item->save();
}
我从表单请求中得到关注。
上面的代码确实有效,但我认为它不是很有效。我正在寻找以更有效的方式实现结果的可选方法。
解决方案
取而代之的是检索结果,循环遍历,可以直接更新,
$yes = Tour::whereIn('id', $request->promote)->update(['promote' => 1]);
$no = Tour::whereNotIn('id', $request->promote)->update(['promote' => 0]);
推荐阅读
- mongodb - 将 MongoDB $max 结果转换为 golang 数据
- codeceptjs - 无法连接到 WebDriver。错误:连接 ECONNREFUSED 127.0.0.1:4444 (codeceptjs)
- reactjs - 如何开玩笑地模拟 useHistory 钩子?
- nativescript - NativeView 在返回应用后捕获 Exception: TypeError
- python - 如何组合两列的浮点值并将其放在数据框的另一列中?
- python - 烧瓶根据其他表的ID添加一个新行
- javascript - CSP:拒绝执行内联脚本
- php - 如何使用 PhpUnit 使用 Laravel 测试服务?
- python - 如何通过傅里叶变换获得有关图像清晰度的信息?
- python - 为什么Python的turtle模块中的back()函数不能正常工作?