【发布时间】:2016-05-30 10:42:36
【问题描述】:
我正在使用 cakePHP 3.0 创建一个 WebApp。
我有一个用户模型和表,它拥有并属于许多用户。
所以我按照蛋糕惯例摆桌:
CREATE TABLE IF NOT EXISTS `users`
(
user_id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
);
和 JOIN 表:
CREATE TABLE IF NOT EXISTS `users_users`
(
supervisor_id int,
employee_id int,
FOREIGN KEY (supervisor_id) REFERENCES users(user_id),
FOREIGN KEY (employee_id) REFERENCES users(user_id)
);
在我的 UserTable.php 中,我创建了这些关联:
$this->table('users');
$this->primaryKey('user_id');
$this->belongsTo('Users', [
'foreignKey' => 'user_id',
'joinType' => 'INNER'
]);
$this->belongsToMany('Supervisors', [
'className' => 'Users',
'targetForeignKey' => 'supervisor_id'
]);
$this->belongsToMany('Employees', [
'className' => 'Users',
'targetForeignKey' => 'employee_id'
]);
现在在一种新的模型方法中,我想获得一名员工的主管:
public function getSupervisorEmail($user_id) {
$supervisors = $this->Employees->Supervisors->find()->select(['user_id']);
debug($supervisors);
return $supervisors;
}
我将示例数据放在 users_users 表中,但我不知道如何访问这些条目。上面函数中的查询没有做我期望它做的事情。它只是从我的用户表中返回一条记录,而没有加入 users_users 表这是我不明白的,因为我根据 cakePHP 3 的命名约定进行了所有设置......
如何访问我的加入表并获取相关记录? EG 获取与 user_id 1 的用户关联的主管。我尝试了不同的查询,但没有人使用我的联接表。
感谢您的回答!
【问题讨论】:
标签: php cakephp join cakephp-3.0 has-and-belongs-to-many