【发布时间】:2020-11-23 13:09:55
【问题描述】:
在我的 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 类型有两个字段: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"
我该如何解决?
谢谢
【问题讨论】:
-
你通过调用
$leaverequest->leavetype()方法得到查询生成器,你需要用$leaverequest->leavetype调用关系结果所以$leaverequest->leavetype->leave_type_name
标签: laravel