在 laravel 中一次更新多个列的值

Posted

技术标签:

【中文标题】在 laravel 中一次更新多个列的值【英文标题】:update multiple columns value at once in laravel 【发布时间】:2018-04-08 14:30:41 【问题描述】:

我正在尝试使用结帐时间更新所有选定员工的考勤列outtime。在intime 签入时间成功存储在数据库中,但更新时遇到问题。我做了类似下面的事情,但它正在更新唯一的第一行。请问应该写什么查询有人帮助我吗?

出勤控制器.php

public function checkout(Request $request)


    $request->validate([
        'outtime'  => 'required',
        'employee_id' => 'required',
    ]);


    $outTime    = Carbon::parse($request->outtime)->format('H:i:s');
    $date       = date('Y-m-d');
    $employeeIds = $request->employee_id;

    $data = [];


    foreach ($employeeIds as $employeeId) 
        $data[] = [
            'employee_id' => $employeeId,
            'attendance_date' => $date,
        ];

    

    $update = Attendance::where('employee_id', $data)
                        ->where('attendance_date', $date)
                        ->update([
                            'outtime' => $outTime 
                        ]);


    return back()->with('success', 'Checked Out');       

【问题讨论】:

【参考方案1】:

使用这个:

whereIn('employee_id', $employeeIds)

【讨论】:

以上是关于在 laravel 中一次更新多个列的值的主要内容,如果未能解决你的问题,请参考以下文章

如何在mysql中一次更改多个表?

Laravel:单击按钮时更新列的值

如何在 Firestore 中一次创建/更新多个文档

在 Parse 中一次更新多个对象

一次更新多行 Laravel Eloquent

如何在 AWK 中一次删除多个列和字段分隔符?