【发布时间】:2015-07-01 12:32:13
【问题描述】:
我有一个 Laravel 应用程序,我在其中使用 jQuery DataTables 来更新一些记录。我从数据库中检索这些记录,我必须确认它们。在 DataTable 上,我在最后一列有一个复选框。
现在我可以在选中复选框时更新数据库中的记录,但更新的记录与复选框行上的记录不对应。这是更新前的:
这是在记录更新后:
如您所见,更新的是月份 = 3 的记录,而不是月份 = 4 的记录。
这是控制器上的代码:
public function update(Request $request)
{
$user = Auth::user();
$is_validated = $request->get('is_validated');
$rec_id = $request->get('id');
$reports = [];
foreach($is_validated as $key => $valid){
$id = $rec_id[$key];
if(!empty($valid)){
$reports[] = DB::table('reports')->where('reports.id', $id)->update(['is_validated' => 1, 'validated_by' => $user->id]);
}else{
$reports[] = DB::table('reports')->where('reports.id', $id)->update(['is_validated' => 0, 'validated_by' => $user->id]);
}
}
}
感谢所有帮助或提示。
编辑
我尝试对列重新排序,并且数据表上的第一列已更新,无论它们的 id 是什么。
编辑 2
这是设置请求参数的javascript。
columns: [
{data: 'id', name: 'reports.id'},
{data: 'month', name: 'reports.month'},
{data: 'value', name: 'reports.value'},
{data: 'comment', name: 'reports.comment'},
{data: 'is_validated', name: 'reports.is_validated'},
],
"columnDefs": [ {
"targets": [0],
"render": function ( data, type, full, meta ) {
return '<input type="text" name="id[]" data-name"id-' + meta.row + '" value="'+data+'" class="hidden"/>';
}
},{
"targets": [4],
"render": function ( data, type, full, meta ) {
return '<input name="is_validated[]" data-name"is_validated-' + meta.row + '" class="checkbox" type="checkbox" unchecked/>';
}
}
]
【问题讨论】:
-
检查
$is_validated是否给出了正确的选择ID。请提及是否应该执行 if 或 else 阻塞? -
$is_validated提供复选框输入。但是$rec_id确实给出了正确的 ID。是的,它应该执行 if/else 块 -
请展示您的 JavaScript 代码,演示您如何设置
id和is_validated请求参数。 -
@Gyrocode.com 我更新了问题
标签: php laravel datatables