如何在 Laravel Query Builder 中批量更新(编辑)?
How to Mass Update(Edit) in Laravel Query Builder?
大家好,我正在尝试使用复选框对我的应用程序进行批量更新,但是当我尝试更新时,它只会更新第一个学生 ID(我尝试 select 其他学生更新不会工作)。您能否提供一些我可以遵循的见解或具体示例?
这是我目前尝试过的方法
public function changeSched()
{
DB::table('class_list')
->whereIn('id', $this->selectedStudents)
->update(['section' => $this->selectedSched]);
}
对于我的复选框
@foreach($classlist as $stud)
<tr>
<th class="bg-white py-5 px-5">
<div class="items-center">
<input type="checkbox" wire:model="selectedStudents.{{ $stud->id }}"/>
</div>
</th>
我在您的更新语句中没有看到任何错误,因此它应该更新查询提供的所有记录(大量更新已记录 here)。
我猜错误是在你设置$this->selectedStudents
之前。您确定此变量包含一个包含所有选定 ID 的简单数组(不是关联数组)吗?
您应该执行以下操作:
- 调试
$this->selectedStudents
变量以确保其内容正确
- 暂时用硬编码值替换它
[1, 2, 3]
以确保您的其余代码正常工作
更新
要将 $this->selectedStudents
转换为正确的格式,您可以执行以下操作:
$selectedIds = [];
foreach ($this->selectedStudents as $id => $isSelected){
if ($isSelected) {
$selectedIds[] = $id;
}
}
DB::table('class_list')
->whereIn('id', $selectedIds)
->update(['section' => $this->selectedSched]);
大家好,我正在尝试使用复选框对我的应用程序进行批量更新,但是当我尝试更新时,它只会更新第一个学生 ID(我尝试 select 其他学生更新不会工作)。您能否提供一些我可以遵循的见解或具体示例?
这是我目前尝试过的方法
public function changeSched()
{
DB::table('class_list')
->whereIn('id', $this->selectedStudents)
->update(['section' => $this->selectedSched]);
}
对于我的复选框
@foreach($classlist as $stud)
<tr>
<th class="bg-white py-5 px-5">
<div class="items-center">
<input type="checkbox" wire:model="selectedStudents.{{ $stud->id }}"/>
</div>
</th>
我在您的更新语句中没有看到任何错误,因此它应该更新查询提供的所有记录(大量更新已记录 here)。
我猜错误是在你设置$this->selectedStudents
之前。您确定此变量包含一个包含所有选定 ID 的简单数组(不是关联数组)吗?
您应该执行以下操作:
- 调试
$this->selectedStudents
变量以确保其内容正确 - 暂时用硬编码值替换它
[1, 2, 3]
以确保您的其余代码正常工作
更新
要将 $this->selectedStudents
转换为正确的格式,您可以执行以下操作:
$selectedIds = [];
foreach ($this->selectedStudents as $id => $isSelected){
if ($isSelected) {
$selectedIds[] = $id;
}
}
DB::table('class_list')
->whereIn('id', $selectedIds)
->update(['section' => $this->selectedSched]);