2011-10-10 6 views
0

id, task_id, user_id 및 sender_id가있는 Tasks_Users 테이블이 있습니다. 문제는 user_id이고 sender_id는 모두 Users 테이블의 facebook_id를 참조하고 있으며 두 개의 외래 키와 함께 연결할 수 있는지 잘 모르겠습니다. 한 열에서 HABTM 관계로 정의 된 두 개의 외래 키를 얻을 수있는 방법이 있습니까?Cakephp 복수 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 [ 'Sender'] [ 'Sender'] []

이론적으로이 두 가지를 모두 저장해야하지만 불행히도 Tasks 컨트롤러에 대한 스캐 폴딩에서 추가 작업을 사용하여 저장하면 TasksUser 테이블에 Sender_id 만 저장되고 Users 컨트롤러에 대한 스캐 폴딩에서 추가 작업을 사용하여 저장하면 TasksUser 테이블에 User_id 만 저장됩니다.

TasksUser 테이블

은 다음과 같습니다 : 그것은 모두 USER_ID를 저장하고 같은 행에 SENDER_ID 있도록

이 가
id task_id user_id sender_id 

가 어떻게 그것을 할 수 ??? 당신은 당신의 컨트롤러를 넣고 코드를 삽입해야

답변

0

,

$this->TaskUser->bindModel(
      array('belongsTo' => array(
      'User1' => array(
      'className' => 'User', 
      'foreignKey' => 'user_id'), 

      'User2' => array(
      'className' => 'User', 
      'foreignKey' => 'sender_id'), 
       ) 
       ) 
      ); 
+0

어느 컨트롤러 용입니까? –

+0

위의 코드를 입력하여 Tasks_Users_controller의 작업에서 쿼리를 찾으십시오. – chetanspeed511987

+0

죄송합니다. 그러나 작동하지 않습니다. –

0

그것은 내가 다른 수정없이 의미, 일반적으로 작동합니다 : 를 다른 테이블에 HABTM를 통해 관련 테이블 사용자가있는 경우, 때를 saveAll CakePhp는 자동으로 Join 테이블을 갱신해야합니다. 나에게 그것은 효과가있다.