Php 在laravel eloquent中使用jquery数据表中的复选框值

Php 在laravel eloquent中使用jquery数据表中的复选框值,php,laravel,checkbox,laravel-5,Php,Laravel,Checkbox,Laravel 5,我在Laravel应用程序中有一个jQuery数据表。我想使用复选框确认以前从其他人处存储的数据。选中该复选框后,我想将该记录的属性更新为值1(true)。现在我可以从数据库中获得所有需要确认的记录。然而,当我尝试确认其中一条时,每一条记录都会被确认,即使我没有选中另一条复选框 我猜错误在下面的控制器更新方法中: public function update(Request $request) { $user = Auth::user(); $is_validated = $re

我在Laravel应用程序中有一个jQuery数据表。我想使用复选框确认以前从其他人处存储的数据。选中该复选框后,我想将该记录的属性
更新为值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');
}
我也尝试过使用单选按钮,但是因为它们都有相同的名字,所以我只能在所有记录中选择一个按钮


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

当您更新表时,它将更新所有列,除非您将
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个查询而不是批次。

当您更新一个表时,它将更新所有列,除非您将
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个查询,而不是很多查询