laravel - 未定义的属性:Laravel 中的 Illuminate\Database\Eloquent\Relations\BelongsTo::$leave_type_name
问题描述
在我的 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 (auto-increment) 和 leave_type_name (varchar)
编号 | 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')
当我提交时,我收到了这个错误:
#message:“未定义的属性:Illuminate\Database\Eloquent\Relations\BelongsTo::$leave_type_name”
我该如何解决?
谢谢
解决方案
尝试以下操作:
$leaveType = $leaverequest->leavetype;
if ($leaveType && ($leaveType->leave_type_name == 'Annual' || $leaveType->leave_type_name == 'Annual Leave'))
旁注:最好将这些字符串“Annual”和“Annual Leave”作为常量或枚举。
推荐阅读
- javascript - 评估对数组中项目的多项检查
- salesforce - 比较记录的旧值和新值
- javascript - 谁能在运行 todos.pop(); 后向我解释为什么 i = 1 而不是 0;
- awk - 从第一行读取变量并打印整个文件,然后打印变量
- typescript - 将对象键合并到类中
- python - 转换 .ui 文件时出错,未转换为 .py
- amazon-web-services - 删除带有引用的资源
- node.js - 关于nodejs使用'async-lock'返回值的问题
- javascript - python服务器和javascript客户端之间的Websocket
- javascript - 只能通过一种方法访问“this”