簡體   English   中英

Cakephp Multiple hasAndBelongsToMany HABTM

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM