Попытка получить свойство 'full_time' не-объекта - PullRequest
0 голосов
/ 11 марта 2020

У меня есть две таблицы, employees table и payrolls table, сейчас я пытаюсь добавить данные в payrolls table для расчета суммы брутто для сотрудника, но когда я пытаюсь это сделать, я продолжаю получать эту ошибку, может кто-нибудь помочь мне разобраться!

Вот Payroll model `

protected $dates = ['deleted_at'];

protected $fillable = ['over_time', 'notified','hours','rate', 'gross', 'employee_id'];

public function employee(){
    return $this->belongsTo('App\Employee');
}

public function grossPay(){
    $calc = 0;
    if($this->employee->full_time && !$this->over_time){
        return $this->gross = $this->employee->role->salary;
    }
    if($this->employee->full_time && $this->over_time){
        $calc = $this->hours * $this->rate;
        return $this->gross = $calc + $this->employee->role->salary;
    }
    if($this->over_time || !$this->employee->full_time){
        $calc = $this->hours * $this->rate;
        return $this->gross = $calc;
    }
    return $this->$gross = 0;
}

}`

Вот маршрут : Route::post('/payrolls/{id}', 'PayrollController@store')->name('payrolls.store');

PayrollController

 public function store(Request $request)
{
    $this->validate($request ,[
        'over_time' => 'required|bool',
        'hours' => 'required',
        'rate' => 'required'
    ]);

    $payroll = new Payroll;
    $payroll->over_time = $request->over_time;
    $payroll->hours = $request->hours;
    $payroll->rate = $request->rate;
    $payroll->employee_id = $request->employee_id;
    $payroll->grossPay();
    $payroll->save();

    return redirect('payroll.show', ['employee_id'=>$employee_id] )->with('success','payroll created');

}

1 Ответ

0 голосов
/ 11 марта 2020

Вы должны найти сотрудника, а затем проверить соответствующее состояние.

public function grossPay(){
    $calc = 0;
    $employee = Employee::findOrFail($this->employee_id);

    if($employee->full_time && !$this->over_time){
        return $this->gross = $this->employee->role->salary;
    }
    if($employee->full_time && $this->over_time){
        $calc = $this->hours * $this->rate;
        return $this->gross = $calc + $employee->role->salary;
    }
    if($this->over_time || !$this->full_time){
        $calc = $this->hours * $this->rate;
        return $this->gross = $calc;
    }
    return $this->gross = 0;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...