我有一个带有id,task_id,user_id和sender_id的Tasks_Users表。问题是user_id和sender_id都是指用户表中的facebook_id,我不知道如何用两个外键将它们连接在一起。 有没有办法让我们可以从一列中获得两个用HABTM关系定义的外键?CakePHP Multiple hasAndBelongsToMany HABTM
更新:下面是我目前在我的任务模型中设置的内容。
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' => ''
)
);
下面是TasksUser模型
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' => ''
)
);
我设法让两个多选框一个USER_ID,另一个用于SENDER_ID但问题是我无法同时保存两行同一行...
数据数组来就像这样$ this-> data ['User'] ['User'] [] and $ this-> data ['Sender'] ['Sender'] []
理论上它应该保存两者,当您在脚手架中为任务控制器保存使用添加操作时,仅将Sender_id保存在TasksUser表中,并且当您在用户控制器的脚手架中使用添加操作进行保存时,仅在TasksUser表中保存User_id。
的TasksUser表是如下:
id task_id user_id sender_id
我怎样才能使它所以它节省了USER_ID,并在同一行SENDER_ID ???
哪个控制器适用于? –
把上面的代码放在Tasks_Users_controller – chetanspeed511987
的行为中查找您的查询,很抱歉,但这不起作用 –