【发布时间】:2021-04-09 14:12:38
【问题描述】:
在我的 Laravel-8 应用程序中,我正在构建用户 API:
在用户模型中,我有这样的关系:
public function company()
{
return $this->belongsTo('App\Models\Organization\OrgCompany');
}
public function employee(){
return $this->hasOne(HrEmployee::class, 'user_id');
}
在员工关系中,我有:
public function gradelevel()
{
return $this->belongsTo('App\Models\Hr\HrGradeLevel','grade_level_id','id');
}
public function department()
{
return $this->belongsTo('App\Models\Hr\HrDepartment','department_id','id');
}
那么我的 Controller 是这样的:
public function userAll()
{
try{
if(!Auth::user()->hasPermissionTo('user_access'))
{
return response()->json([ "message" => 'You are not authorised to view Users'], 401);
}
return response()->json(User::with('employee','company','department','gradelevel')->get(), 200);
} catch (\Exception $e) {
Log::error($e);
$message = $e->getMessage();
return response()->json(['error' => 1, 'message' => $message]);
}
}
当我尝试在 POSTMAN 中测试它时,我得到了这个错误:
“消息”:“调用模型 [App\Models\User] 上的未定义关系 [部门]。”
如何访问不直接链接到用户而是链接到员工的部门和年级关系?
谢谢
【问题讨论】:
-
你需要在 User 模型上定义
department关系,你在 Employee 模型上定义了它 -
如果用户模型与员工模型有关系,那么你可以这样做:
User::with('employee','company','employee.department','emloyee.gradelevel')