首页 > 解决方案 > Laravel - 试图获取非对象的属性'time_in'

问题描述

我有一个错误

试图获取非对象的属性“time_in”(查看:C:\xampp\htdocs\AttendanceEmployeeSystem\resources\views\admin\attendance.blade.php)

这是我的代码:


考勤控制器.php


<?php

namespace App\Http\Controllers;

use DateTime;
use App\User;
use App\Latetime;
use App\Attendance;
use Illuminate\Support\Facades\Hash;
use App\Http\Requests\AttendanceEmp;


 class AttendanceController extends Controller
{
/**
 * Display a listing of the attendance.
 *
 * @return \Illuminate\Http\Response
 */
public function index()
{
    return view('admin.attendance')->with(['attendances'=> Attendance::all()]);
}

/**
 * Display a listing of the latetime.
 *
 * @return \Illuminate\Http\Response
 */
public function indexLatetime()
{
    return view('admin.latetime')->with(['latetimes' => Latetime::all()]);
}



/**
 * assign attendance to employee.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function assign(AttendanceEmp $request)
{
    $request->validated();

    if ($employee = User::whereEmail(request('email'))->first()){

        if (Hash::check($request->pin_code, $employee->pin_code)) {
                if (!Attendance::whereAttendance_date(date("Y-m-d"))->whereUser_id($employee->id)->first()){
                    $attendance = new Attendance;
                    $attendance->user_id = $employee->id;
                    $attendance->attendance_time = date("H:i:s");
                    $attendance->attendance_date = date("Y-m-d");

                    if (!($employee->schedules->first()->time_in >= $attendance->attendance_time)){
                        $attendance->status = 0;
                    AttendanceController::lateTime($employee);
                    };
                    $attendance->save();

                }else{
                    return redirect()->route('attendance.login')->with('error', 'you assigned your attendance before');
                }
            } else {
            return redirect()->route('attendance.login')->with('error', 'Failed to assign the attendance');
        }
    }



    return redirect()->route('home')->with('success', 'Successful in assign the attendance');
}

/**
 * assign late time for attendace .
 *
 * @return \Illuminate\Http\Response
 */
public static function lateTime(User $employee)
{
    $current_t= new DateTime(date("H:i:s"));
    $start_t= new DateTime($employee->schedules->first()->time_in);
    $difference = $start_t->diff($current_t)->format('%H:%I:%S');


    $latetime = new Latetime;
    $latetime->user_id = $employee->id;
    $latetime->duration   = $difference;
    $latetime->latetime_date  = date("Y-m-d");
    $latetime->save();

}


}

出勤.blade.php


@extends('layouts.main')

@section('content')
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<section class="content-header">
    <h1>
        Attendance
    </h1>
    <ol class="breadcrumb">
        <li><a href="#"><i class="fa fa-dashboard"></i> Home</a></li>
        <li class="active">Attendance</li>
    </ol>
</section>
<!-- Main content -->
<section class="content">
    @include('includes.messages')

    <div class="row">
        <div class="col-xs-12">
            <div class="box">
                <div class="box-header with-border">
                    <a href="/attendance/assign" data-toggle="modal" class="btn btn-primary btn-sm btn-flat"><i class="fa fa-plus"></i> New</a>
                </div>
                <div class="box-body">
                    <table id="example1" class="table table-bordered">
                        <thead>
                            <th>Date</th>
                            <th>Employee ID</th>
                            <th>Name</th>
                            <th>Attendance</th>
                            <th>Time In</th>
                            <th>Time Out</th>
                        </thead>
                        <tbody>
                            @foreach( $attendances as $attendance)

                            <tr>
                                <td>{{$attendance->attendance_date}}</td>
                                <td>{{$attendance->user_id}}</td>
                                <td>{{$attendance->user->name}}</td>
                                <td>{{$attendance->attendance_time}}
                                    @if( $attendance->status == 1 )
                                    <span class="label label-warning pull-right">On Time</span>
                                    @else
                                    <span class="label label-danger pull-right">Late</span>
                                    @endif
                                </td>
                                <td>{{$attendance->user->schedules->first()->time_in}} </td>
                                <td>{{$attendance->user->schedules->first()->time_out}}</td>
                            </tr>

                            @endforeach

                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</section>
</div>

 @endsection

我不知道是因为时间格式还是其他原因,请帮忙!

错误截图

标签: phpmysqllaravel

解决方案


当你有这样的事情:

$attendance->user->schedules->first()->time_in

确保链条不会断裂。所以你必须检查是否$attendance->user存在,然后检查是否$attendance->user->schedules存在等等。

现在尝试这样的事情:

 $attendance->user->schedules->first() ? $attendance->user->schedules->first()->time_in : 'Schedule not found';

推荐阅读