Cakephp多个hasAndBelongsToMany HABTM
我有一个表Tasks\u Users,id为,task\u id,user\u id和sender\u id。问题是user\u id和sender\u id都是指Users表中的facebook\u id,我不确定如何用两个外键将它们连接在一起。 有没有一种方法可以从一列中获得两个用HABTM关系定义的外键 更新:下面是我目前在任务模型中设置的内容Cakephp多个hasAndBelongsToMany HABTM,php,cakephp,Php,Cakephp,我有一个表Tasks\u Users,id为,task\u id,user\u id和sender\u id。问题是user\u id和sender\u id都是指Users表中的facebook\u id,我不确定如何用两个外键将它们连接在一起。 有没有一种方法可以从一列中获得两个用HABTM关系定义的外键 更新:下面是我目前在任务模型中设置的内容 var $hasAndBelongsToMany = array( 'User' => array(
var $hasAndBelongsToMany = array(
'User' => array(
'className' => 'User',
'joinTable' => 'tasks_users',
'foreignKey' => 'task_id',
'associationForeignKey' => 'user_id',
'unique' => true,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
),
'Sender' => array(
'className' => 'User',
'joinTable' => 'tasks_users',
'foreignKey' => 'task_id',
'associationForeignKey' => 'sender_id',
'unique' => true,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);
下面是用户模型
var $hasAndBelongsToMany = array(
'Task' => array(
'className' => 'Task',
'joinTable' => 'tasks_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'task_id',
'unique' => true,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);
var $belongsTo = array(
'Task' => array(
'className' => 'Task',
'foreignKey' => 'task_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Sender' => array(
'className' => 'User',
'foreignKey' => 'sender_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
下面是TasksUser模型
var $hasAndBelongsToMany = array(
'Task' => array(
'className' => 'Task',
'joinTable' => 'tasks_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'task_id',
'unique' => true,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);
var $belongsTo = array(
'Task' => array(
'className' => 'Task',
'foreignKey' => 'task_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Sender' => array(
'className' => 'User',
'foreignKey' => 'sender_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
我设法获得了两个多选择框,一个用于用户id,另一个用于发件人id,但问题是我无法同时为同一行保存这两个框
数据数组如下所示:$this->data['User']['User'][]和$this->data['Sender']['Sender'][]
理论上,它应该同时保存这两个,但不幸的是,当您在任务控制器的脚手架中使用添加操作进行保存时,它只在TasksUser表中保存发送者id,而当您在用户控制器的脚手架中使用添加操作进行保存时,它只在TasksUser表中保存用户id
TasksUser表如下所示:
id task_id user_id sender_id
如何使其在同一行同时保存用户id和发件人id???您必须在控制器中输入以下代码
$this->TaskUser->bindModel(
array('belongsTo' => array(
'User1' => array(
'className' => 'User',
'foreignKey' => 'user_id'),
'User2' => array(
'className' => 'User',
'foreignKey' => 'sender_id'),
)
)
);
它应该正常工作,我的意思是没有任何其他修正:
如果您有一个通过HABTM与其他表关联的表用户,那么在进行saveAll操作时,CakePhp应该自动更新联接表。对我来说,它确实有效。这是为哪个控制器设计的?在任务中的操作中查找查询之前,请输入以上代码。\u Users\u controllerI我在上面尝试过,我也尝试过:$this->TasksUser->bindModel(array('belongsTo'=>array('User'=>array('className'=>'User',foreignKey'=>'User\u id')),'Sender'=>数组('className'=>'User','foreignKey'=>'Sender_id'),);但它不起作用…我得到一个表作为多个选择框,它是userid,但我不能得到senderid的多个选择框