使用laravel中jquery DataTable中的复选框值


using the checkbox value from a jquery DataTable in laravel eloquent

我在Laravel应用程序中有一个jQuery DataTable。我想通过使用复选框来确认其他人以前存储的数据。选中该复选框后,我想将该记录的属性is_confirmed更新为值1(true)。现在我可以从数据库中获得所有需要确认的记录。然而,当我尝试确认其中一个时,每一条记录都会被确认,即使我不选中另一个复选框也是如此。

我猜错误是在下面的控制器更新方法中:

public function update(Request $request)
{
    $user = Auth::user();
    $is_validated = $request->get('is_validated');
    foreach ($is_validated as $valid_Id) {
        if($valid_Id.value(1)) //<-here i suspect that the error is
    {
            DB::table('reports')->update(['is_validated' => 1, 'validated_by' => $user->id]);
        }
    }
    return view('validate.update');
}

我尝试用下面的代码更改复选框的值。

$('.checkbox').change(function(){
    cb = $(this);
    cb.val(cb.prop('checked'));
    cb.value = 1;
});

我也尝试过使用单选按钮,但由于它们都有相同的名称,我只能在所有记录中选择一个按钮。

我被困在这一点上,似乎我无法独自解决。感谢所有的帮助或提示。

更新表时,它将更新所有列,除非将where()链接到末尾以仅选择需要更新的记录。您还需要为每个可以更新的行提供某种标识符,以便每次只能更新希望更新的行。

如果有很多行,那么优化查询也是一个好主意。目前,它将为每更新一行运行一次。理想情况下,你会想想出以下这样的东西。。。

// Reset is_validate fields to 0
DB::table('reports')->update(['is_validated' => 0);
// Reapply is_validate to each valid field.
DB::table('reports')->update(['is_validated' => 1, 'validated_by' => $user->id])->whereIn('row_id', $request->get('row_ids'));

这样,您就有2个查询,而不是很多查询。