我正在使用laravel VERSION ='5.6.22'。我有两个表 t_project_employee 和 employees 表
我在t_project_employee中存储了project_id和分配的员工。
public function employees(){
return $this->hasOne('App\Employee','emp_id','pe_emp_id')->select(array('emp_id', 'f_name','l_name'));
}
我在员工表中存储员工详细信息。
我正在尝试获取分配给特定项目的所有员工。
return TProjectEmployees::where("pe_prj_id",$projectId)->with("employees")->get();
我正在获得所有项目,而在项目内部,我正在获得员工。我只需要分配给项目的员工详细信息。我完成了上面的代码。我该怎么办
[
{
"pe_id": 1,
"pe_prj_id": 1,
"pe_emp_id": 54,
"pe_role_id": 1,
"pe_startdate": "2018-07-11",
"pe_enddate": "2018-07-19",
"pe_IsActive": 1,
"employees": {
"emp_id": 54,
"f_name": "Aglubat Micheal",
"l_name": "Nicolas"
}
},
我正在控制器中使用以上代码
{{1}}
是结果。我不需要项目详细信息,我只需要员工
答案 0 :(得分:0)
正如我在上面的示例中所示,根据我的意见,您已使用hasOne关系,因为我可能将一个项目分配给多个雇员权利,所以我使用belongsTo关系?因此您的代码将如下所示:
public function employees() {
return $this->belongsTo('App\Employee','emp_id','pe_emp_id')->select(array('emp_id', 'f_name','l_name'));
}
答案 1 :(得分:0)
您的关系有误。 t_project_employees似乎是多对多关系的中间表或枢纽表。因此,您将没有该表的模型,也不会直接查询该表。您在项目模型和员工模型上都将有一个belongsToMany关系。
员工模型:
public function projects()
{
return $this->belongsToMany(Project::class, 't_project_employees');
}
然后查询该关系:https://laravel.com/docs/5.6/eloquent-relationships#querying-relations。
Employee::whereHas('projects', function($q) use ($projectId) {
$q->where('id', $projectId);
});