[英]CakePHP - multiple hasAndBelongsToMany relationships not working
[英]Cakephp Multiple hasAndBelongsToMany HABTM
我有一張表Tasks_Users,其ID為task_id,user_id和sender_id。 問題是user_id和sender_id都在Users表中引用了facebook_id,但我不確定如何將它們與兩個外鍵掛鈎。 有沒有一種方法可以從一列中獲得兩個通過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'] []和$ this-> data ['Sender'] ['Sender'] []
從理論上講,它應該同時保存這兩者,但不幸的是,僅當您在“腳手架”控制器中使用添加操作保存時,才將Sender_id保存在TasksUser表中;而當您在“腳手架”中使用添加動作保存時,僅將User_id保存在TasksUser表中。
TasksUser表如下:
id task_id user_id sender_id
我該怎么做,以便將user_id和sender_id都保存在同一行???
我的意思是它應該正常工作,無需任何其他糾正:如果您有一個通過HABTM與其他表相關聯的表User,則在進行saveAll CakePhp時應自動更新Join表。 對我來說,它確實有效。
您必須將下面的代碼放入控制器中,
$this->TaskUser->bindModel(
array('belongsTo' => array(
'User1' => array(
'className' => 'User',
'foreignKey' => 'user_id'),
'User2' => array(
'className' => 'User',
'foreignKey' => 'sender_id'),
)
)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.