2012-08-29 1 views
0

HABTM 관계를 위해 협회를 연결 삽입하지 않습니다CakePHP의 내가 CakePHP는 2.2.1에서이 개 모델을 가지고있다

class Episode extends AppModel { 
    public $hasAndBelongsToMany = array(
    'Tags' => array('className' => 'Tag') 
    ); 
} 

class Tag extends AppModel { 
    public $hasAndBelongsToMany = array(
     'Episode' => array('className' => 'Episode') 
    ); 
} 

그리고 난에서 에피소드와 태그를 삽입 할 같은 시간에 서로 연결하십시오. 문서에서 나는 이것이 내가 컨트롤러 메소드 내에서 실행 올바른 코드가 될 것이라고 가지고 :

$this->Tag->create(); 
$this->Tag->save(array(
    'name' => 'Test Tag' 
)); 
$tagid = $this->Tag->getInsertID(); 

var_dump($tagid); // works 

$this->Episode->create(); 
$this->Episode->save(array(
    'Episode' => array(
     'title' => 'Test with Tag' 
    ), 
    'Tags' => array(
     'Tag' => array($tagid) 
    ) 
)); 

나는 오류 메시지가 표시되지 모두 기록이 만들어집니다하지만 episodes_tags 테이블에 삽입 된 행이 없습니다. CakePHP는 다음 쿼리를 수행합니다.

Nr Query                            Err Aff Rws Took (ms) 
1 INSERT INTO `pottcast`.`tags` (`name`) VALUES ('Test Tag')                1 1 0 
2 INSERT INTO `pottcast`.`episodes` (`title`) VALUES ('Test with Tag')             1 1 0 
3 SELECT `EpisodesTag`.`tag_id` FROM `pottcast`.`episodes_tags` AS `EpisodesTag` WHERE `EpisodesTag`.`episode_id` = 9  0 0 0 

무엇이 잘못 되었습니까?

답변

0

이 시도 :

에피소드 모델 :

public $hasAndBelongsToMany = array(
    'Tag' => array(
     'className' => 'Tag', 
     'joinTable' => 'episodes_tags', 
     'foreignKey' => 'episode_id', 
     'associationForeignKey' => 'tag_id', 
     'unique' => 'keepExisting', 

    )); 

를 컨트롤러에서 : 당신을 위해 작동하지 않는 경우

$this->Episode->save(array(
    'Episode' => array(
     'title' => 'Test with Tag' 
    ), 
    'Tag' => array(
     'Tag' => $tagid 
    ) 
)); 

가 물어보세요.

+0

나도 그렇지만 아무것도 변경되지 않았습니다. 다른 아이디어가 있습니까? – YMMD

+0

나를 위해 일하고있다. 나는 같은 것을 구현했다. – Krishna

+0

아, 네 말이 맞아. 실제로 행을 작성하지만 SQL 로그에서 SELECT로 인쇄하기 때문에 혼란 스럽습니다. 당신의 도움을 주셔서 대단히 감사합니다! 세 번째 INSERT가없는 이유를 알고 있습니까? – YMMD