0
當前我正在使用CakePHP 3.x並具有以下用例。CakePHP控制器從多個相關表中獲取數據的方法
- 部(ID,名稱,描述)
- 標識(ID,名稱,描述)
- 用戶(ID,名稱,描述)
- DepartmentDesignations(ID,departments_id,designations_id)
- DepartmentDesignationUsers(id,department_designations_id,users_id)
上面提到的是5個不同的表格及其列括號。以下是這些關係。
- 部門有很多名稱。所以爲了解決這個問題,我創建了另一個DepartmentDesignations。
- DepartmentDesignations有許多用戶。所以爲了處理這個我創建了DepartmentDesignationUsers。
我在DepartmentsController中定義了以下函數,我的期望是我需要在單個調用中獲得以下所有信息。 - 所有部門 - 在每個部門的所有名稱(如果有的話) - 所有用戶每個部門指定的(如果有的話)
public function index()
{
$departments = $this->Departments->find('all')
->contain('DepartmentDesignations.Designations')
->contain('Users');
$this->set(compact('departments'));
$this->set('_serialize', ['departments']);
}
我還定義在DepartmentsTable.php
以下$this->belongsToMany('Designations', [
'joinTable' => 'department_designations',
'foreignKey' => 'departments_id',
'targetForeignKey' => 'designations_id'
]);
$this->hasMany('DepartmentDesignations', [
'className' => 'OrganizationManagement.DepartmentDesignations',
'foreignKey' => 'departments_id'
]);
$this->hasMany('DepartmentDesignationUsers',[
'className' => 'OrganizationManagement.DepartmentDesignationUsers',
'foreignKey' => 'department_designations_id'
]);
$this->belongsToMany('Users',[
'joinTable' => 'department_designation_users',
'foreignKey' => 'department_designations_id',
'targetForeignKey' => 'users_id'
]);
我收到以下回復。
{
"departments": [
{
"id": 1,
"name": "Organization",
"description": "",
"parent_id": 0,
"users": [],
"department_designations": [
{
"id": 1,
"departments_id": 1,
"designations_id": 1,
"designation": {
"id": 1,
"name": "Brand head",
"description": "",
"level": 1
}
},
{
"id": 6,
"departments_id": 1,
"designations_id": 6,
"designation": {
"id": 6,
"name": "CEO",
"description": "",
"level": 1
}
}
]
},
{
"id": 2,
"name": "Production",
"description": "",
"parent_id": 1,
"users": [],
"department_designations": [
{
"id": 3,
"departments_id": 2,
"designations_id": 5,
"designation": {
"id": 5,
"name": "Production assistant manager",
"description": "",
"level": 3
}
},
{
"id": 5,
"departments_id": 2,
"designations_id": 4,
"designation": {
"id": 4,
"name": "Production head",
"description": "",
"level": 2
}
}
]
},
{
"id": 3,
"name": "R&D",
"description": "",
"parent_id": 1,
"users": [],
"department_designations": [
{
"id": 2,
"departments_id": 3,
"designations_id": 2,
"designation": {
"id": 2,
"name": "R&D Manager",
"description": "",
"level": 2
}
}
]
},
{
"id": 4,
"name": "Development",
"description": "",
"parent_id": 3,
"users": [],
"department_designations": [
{
"id": 4,
"departments_id": 4,
"designations_id": 2,
"designation": {
"id": 2,
"name": "R&D Manager",
"description": "",
"level": 2
}
}
]
},
{
"id": 5,
"name": "Purchase",
"description": "",
"parent_id": 1,
"users": [],
"department_designations": []
}
]
}
我需要department_designations數組內的用戶信息。所以在這種情況下我需要做些什麼改變。