laravel 尝试""在[duplicate]中读取空值的属性created_at

z8dt9xmd  于 2022-12-19  发布在  其他
关注(0)|答案(2)|浏览(131)
    • 此问题在此处已有答案**:

Trying to get property 'id' of non-object(4个答案)
昨天关门了。
以下是我正在尝试运行的函数。我认为所需的信息正确无误,表中也存在相应的数据,但显示的错误如上所示。以下是我的UserProfileController中的函数。
我尝试将列名从created_at更改为date_checkIn,但显示了相同的错误,两列都存在于数据库表中,如上面的截图所示。

public function userClockOut(Request $r)
    {
        $result = [];
        $result['status'] = false;
        $result['message'] = "something error";

        $users = User::where('staff_id', $r->staff_id)->select(['staff_id', 'date_checkIn', 'time_checkOut', 'location_checkOut'])->first();

        $tt = AttendanceRecord::find($r->tt);
        $tt2 = AttendanceRecord::find($r->tt2);

        $tz = $tt->created_at;
        $tz2 = $tt2->updated_at;

        $date = Carbon::createFromFormat('Y-m-d', $tz, 'UTC');
        $time = Carbon::createFromFormat('H:i:s', $tz2, 'UTC');
        $date->setTimezone('Asia/Singapore');
        $time->setTimezone('Asia/Singapore');

        $users->date_checkIn = $date;
        $users->time_checkOut = $time;
        $users->location_checkOut = $r->location_checkOut;

        // Save the updated data to the database
        AttendanceRecord::updateOrCreate(
            ['staff_id' => $users->staff_id, 'date_checkIn' => $date],
            $users->toArray()
        );

        $result['data'] = $users;
        $result['status'] = true;
        $result['message'] = "suksess add data";

        return response()->json($result);
    }

显示数据库表中存在该列的屏幕截图:
第一个月

3pmvbmvn

3pmvbmvn1#

看起来你的$tt = AttendanceRecord::find($r->tt);没有返回任何值,所以它抛出了一个错误。要解决这个问题,首先你需要确保$r->tt有一个值,并且这个值存在于数据库中。下一步是避免该错误,而不是使用find()方法,您应该使用findOrFail(),如果给定的id不存在于数据库。

$tt = AttendanceRecord::findOrFail($r->tt);
$tt2 = AttendanceRecord::findOrFail($r->tt2);

还要确保$r->tt是表的主键,并确保form中有tt属性

tjrkku2a

tjrkku2a2#

找不到$tt$tt2

$tt = AttendanceRecord::find($r->tt);
$tt2 = AttendanceRecord::find($r->tt2);

相关问题