php 在Laravel MySQL中更新和添加数据时出错

mrwjdhj3  于 2022-12-17  发布在  PHP
关注(0)|答案(2)|浏览(158)

想问一下前面的问题,我确实在attendance_details表中插入了add数据,它起作用了,但是我想在提交之前,将attendance表自动更改为Done表,在0之前更改为1。但是注册时的错误显示类似于Method Illuminate\Database\Eloquent\Collection::save does not exist.的内容。
考勤表明细:


和出勤率:

考勤表中有Done表,提交后仍为0,应改为1
代码:
"刀锋"

<form method="POST" action="{{route('add.data')}}" enctype="multipart/form-data">
        @csrf
        <input type="hidden" name="id_atte" value="{{ $dataAttendance->id_atte }}"
>

主计长

public function ViewData($id){
        $dataAttendance = Attendance::findOrFail($id);
        
        $dataAttendanceTa = Attendance::join('subjects', 'attendances.id_subject', '=', 'subjects.id_sub')
            ->join('class_infos', 'subjects.id_class', '=', 'class_infos.id')
            ->join('class_details', 'class_infos.id', '=', 'class_details.id_class')
            ->join('users', 'class_details.id_user', '=', 'users.id')
            ->where('attendances.id_atte', '=', $id)
            ->get();

        return view('index', compact('dataAttendanceDe', 'dataAttendance', 'dataAttendanceTa'));
    }



public function AddData(Request $request) {
        // Add Data attendance_details
        foreach($request->get('id_atte') as $index => $value) {
            AttendanceDetail::create([
                'id_atte' => $value,
                'id_student' => $request->get('id_student')[$index],
                'id_atte_type' =>$request->get('id_atte_type')[$index],
                'note' => $request->get('note')[$index]
            ]);
        }

        // Update Data attendance
        $data = Attendance::find($request->id_atte);
        $data->done = '0';
        $data->save();

        return redirect('teacher/data-attendance');
    }

编码哪里出错了?

igetnqfo

igetnqfo1#

$request->id_atte从代码的上下文中返回一个id的数组,这意味着$data = Attendance::find($request->id_atte);将返回一个模型的数组而不是一个,这意味着它不能被保存。
您可以在另一个foreach循环中设置done属性,也可以在初始创建中设置。

n1bvdmb6

n1bvdmb62#

在循环函数中,您应该更新出勤模型

public function AddData(Request $request) 
    {
            // Add Data attendance_details
            foreach($request->get('id_atte') as $index => $value) {
                AttendanceDetail::create([
                    'id_atte' => $value,
                    'id_student' => $request->get('id_student')[$index],
                    'id_atte_type' =>$request->get('id_atte_type')[$index],
                    'note' => $request->get('note')[$index]
                ]);
               // Update Data attendance
               $data = Attendance::find($value);
               $data->done = '0';
               $data->save();
            }
    
            return redirect('teacher/data-attendance');
        }

也可以在whereIn之后使用更新查询方法

// Update Data attendance
    $data = Attendance::whereIn('id', $request->id_atte)->update([
        'done' => '0'
    ]);

相关问题