В моих проектах Laravel -5.8 у меня есть две модели: HrLeaveType и HrLeaveRequest
Модель:
class HrLeaveType extends Model
{
protected $table = 'hr_leave_types';
protected $fillable = [
'leave_type_name',
'no_of_days',
'leave_type_code',
];
public function leaverequest(){
return $this->hasMany('App\Models\Hr\HrLeaveRequest');
}
}
class HrLeaveRequest extends Model
{
protected $table = 'hr_leave_requests';
protected $primaryKey = 'id';
protected $fillable = [
'id',
'employee_id',
'department_id',
'leave_type_id',
'reason',
'line_manager_comment',
];
public function leavetype()
{
return $this->belongsTo('App\Models\Hr\HrLeaveType','leave_type_id');
}
}
Сотрудник делает несколько запросов на отпуск.
Если Тип отпуска - Ежегодный или Ежегодный отпуск или ежегодный отпуск, заявка должна соответствовать условиям, указанным ниже в контроллере. Но проблема в том, что мы не можем сказать, что leave_type_id для ежегодного отпуска будет 1.
HrLeave Type имеет два поля: id (автоинкремент) и leave_type_name (varchar)
id | leave_type_name
1 | Ежегодный отпуск
2 | Отпуск по беременности и родам
3 | Отпуск по болезни
Но может быть не в этом порядке
Контроллер
public function leave_request_approve(Request $request, $id)
{
$leaverequest = HrLeaveRequest::find($id);
if ($leaverequest->leavetype()->leave_type_name == 'Annual' || $leaverequest->leavetype()->leave_type_name == 'Annual Leave')
{
$leaverequest->line_manager_comment = $request->line_manager_comment;
$leaverequest->save();
HrEmployee::where('user_id', $leaverequest->employee_id)->update([
'on_leave' => 1
]);
}
}
Поскольку пользователь не может определить, содержит ли ежегодный отпуск leave_type_id как 1, вместо
if ($leaverequest->leave_type_id == 1)
Я использовал
if ($leaverequest->leavetype()->leave_type_name == 'Annual' || $leaverequest->leavetype()->leave_type_name == 'Annual Leave')
При отправке я получил следующую ошибку:
# сообщение: "Неопределенное свойство: Illuminate \ Database \ Eloquent \ Relations \ BelongsTo :: $ leave_type_name "
Как решить эту проблему?
Спасибо