Я новичок в cakephp3. Я не могу присоединиться к данным связанных таблиц. У меня
- Таблица сотрудников.
- Таблица EmployeeLogins
- Таблица сотрудников категории
Отношение:
Таблица сотрудников имеет много сотрудников
И EmployeeLogins belognsTo EmployeeCategories
Я использую, но не получаю данные EmployeeCategories.
Результат, который я хочу, похож на
В одном наборе результатов
Выход:
array(
'Employees' => array(
'id' => 123,
),
'EmployeeLogin' => array(
[0] => array(
'employee_id' => 123,
'last_login' => '2019-01-01',
'category_id' => 3,
'EmployeeCategory' => array(
'id' => 3,
'category_name' => 'contract'
)
)
)
)
EmployeesTable.php
public function initialize(array $config)
{
parent::initialize($config);
$this->setTable('employees');
$this->setDisplayField('id');
$this->setPrimaryKey('id');
$this->addBehavior('Timestamp');
$this->hasMany('EmployeeLogins', [
'foreignKey' => 'user_id',
'dependent' => true
]);
}
EmployeeLoginsTable.php
public function initialize(array $config)
{
parent::initialize($config);
$this->setTable('employee_logins');
$this->setDisplayField('name');
$this->setPrimaryKey('id');
$this->belongsTo('Categories', [
'foreignKey' => 'category_id',
]);
}
EmployeeCategoriesTable.php
public function initialize(array $config)
{
parent::initialize($config);
$this->setTable('employee_catgories');
$this->setDisplayField('id');
$this->setPrimaryKey('id');
$this->addBehavior('Timestamp');
}
Код в контроллере
$Employees = TableRegistry::get('Employees');
$EmployeeLogins = TableRegistry::get('EmployeeLogins');
$EmployeeCategories = TableRegistry::get('EmployeeCategories');
$Employees->hasMany('EmployeeLogins', [
'className' => 'EmployeeLogins',
'foreignKey' => 'employee_id',
'propertyName' => 'employee_logins'
]);
$Employees->EmployeeLogins->belongsTo('EmployeeCategories', [
'className' => 'EmployeeCategories',
'conditions' => [
'EmployeeLogins.category_id' => 'EmployeeCategories.id'
],
'propertyName' => 'employee_categores',
]);
$result = $Employees
->find()
->where([
'Employees.user_id)' => $user_id,
])
->contain([
'EmployeeLogins' => [
'EmployeeCategories'
]
])
->all();