在Cakephp中连接表
我正在探索cakePHP并试图加入工作,但失败了。感谢您的帮助!情况:我有一个用户表和一个时隙表。每个时间段设置为有多个用户时间段意味着有两个用户相遇:在Cakephp中连接表,cakephp,Cakephp,我正在探索cakePHP并试图加入工作,但失败了。感谢您的帮助!情况:我有一个用户表和一个时隙表。每个时间段设置为有多个用户时间段意味着有两个用户相遇: var $hasMany = array( 'Partner' => array( 'className' => 'User', 'foreignKey' => 'id' ), 'Student' => array( 'className' => 'User', 'foreignKey' =&g
var $hasMany = array(
'Partner' => array(
'className' => 'User',
'foreignKey' => 'id'
),
'Student' => array(
'className' => 'User',
'foreignKey' => 'id'
)
);
所以,我想做的是加载一个时隙,并加入users表来填充谁是“合作伙伴”和谁是“学生”。现在,我已经通过这种方式为学生设置了连接:
$params = array(
'joins' => array(
array(
'table' => 'users',
'alias' => 'User',
'type' => 'LEFT',
'conditions' => array(
'User.id = Timeslot.student_id',
)
)
)
);
$this->set('timeslots', $this->Timeslot->find('all', $params));
在我的时间段变量中,当我进入视图时,由于$hasMany关联,我有一个Partner数组和一个Student数组。但我不知道如何以适当的方式加载这些变量
谢谢你的帮助 欢迎来到CakePHP
看起来你们的关系设置不正确。根据您的描述,一个时间段将有一个参与者和一个学生。因此,应该定义的关系是belongsTo。您的时隙表应该有两个外键,partner_id和student_id。然后在您的时隙模型中声明:
var $belongsTo = array(
'Partner' => array(
'className' => 'User',
'foreignKey' => 'partner_id'
),
'Student' => array(
'className' => 'User',
'foreignKey' => 'student_id'
)
);
结果应该是调用$this->Timeslot->find,返回如下内容:
array(
0 => array(
'Timeslot' => array(...),
'Partner' => array(...),
'Student' => array(...)
),
1 => array(
'Timeslot' => array(...),
'Partner' => array(...),
'Student' => array(...)
),
...
)
这就是你想说的吗?嗨,泰勒!谢谢…学习cakePhp是一种享受!那很有效!谢谢你的帮助。