2011-11-20 3 views
0

HABTM 연결에 문제가 있습니다. 나는 테이블 object_media 가입 생성하고 object_id, medium_idmodel 필드를 가지고 싶어 이렇게하려면HABTM 조인 테이블의 추가 필드

템플릿 HABTM 중간 페이지 HABTM 중간

:

난 할 노력하고있어 다음이다 . 페이지 ID 또는 템플리트 ID는 object_id 필드에 들어가고 모델에는 '페이지'또는 '템플리트'가 있습니다. 이렇게하면 모든 모델을 중간 모델과 연결할 수 있습니다. (매체 = 미디어, 모든 이미지, 비디오, 문서 등이 저장됩니다.) 그런 다음 HABTM 관계에 조건을 전달하여 해당 특정 모델에 대한 미디어 만 얻을 수 있습니다. 예 : ObjectMedium.model => 'Template'은 템플릿에 연결된 모든 미디어를 반환합니다.

간단히 말해서 : 어떤 모델을 어떤 매체에 연결하는 1 개의 표가 필요합니다.

Template.php

class Template extends AppModel{ 
    public $name = 'Template'; 

    public $hasMany = array(
     'TemplateColumn' 
    ); 

    public $hasAndBelongsToMany = array(
     'Medium' => array(
     'className' => 'Medium', 
     'joinTable' => 'object_media', 
     'foreignKey' => 'object_id', 
     'associationForeignKey' => 'medium_id' 
     ) 
    ); 
} 

Medium.php도 매체를 저장하지 것이다 그 다음 데이터를 공급하지만

class Medium extends AppModel{ 
    public $name = 'Medium'; 
    public $useTable = 'media'; 

    public $hasAndBelongsToMany = array(
     'Template' => array(
     'className' => 'Template', 
     'joinTable' => 'object_media', 
     'foreignKey' => 'medium_id', 
     'associationForeignKey' => 'object_id' 
     ) 
    ); 
} 

이 :

Array 
    (
[Template] => Array 
    (
     [name] => 
    ) 

[TemplateColumn] => Array 
    (
     [0] => Array 
      (
       [block] => 0 
       [column] => 0 
       [grid] => 7 
      ) 

     [1] => Array 
      (
       [block] => 0 
       [column] => 1 
       [grid] => 5 
      ) 

     [2] => Array 
      (
       [block] => 1 
       [column] => 0 
       [grid] => 6 
      ) 

     [3] => Array 
      (
       [block] => 1 
       [column] => 1 
       [grid] => 6 
      ) 

    ) 

[Medium] => Array 
    (
     [0] => Array 
      (
       [name] => 7917196b42c3626c10ab024bbafb8171 
       [src] => 134a16c2202ff2b0c9b1c51dddb1bcfc.jpg 
       [type] => Image 
      ) 

    ) 

이 나를을 제공합니다 다음 검색어 :

INSERT INTO `templates` (`name`, `modified`, `created`) VALUES ('', '2011-11-20 15:18:46', '2011-11-20 15:18:46') 
SELECT `ObjectMedium`.`medium_id` FROM `object_media` AS `ObjectMedium` WHERE `ObjectMedium`.`object_id` = 30 
INSERT INTO `template_columns` (`block`, `column`, `grid`, `template_id`, `modified`, `created`) VALUES (0, 0, 7, 30, '2011-11-20 15:18:46', '2011-11-20 15:18:46') 
INSERT INTO `template_columns` (`block`, `column`, `grid`, `template_id`, `modified`, `created`) VALUES (0, 1, 5, 30, '2011-11-20 15:18:46', '2011-11-20 15:18:46') 
INSERT INTO `template_columns` (`block`, `column`, `grid`, `template_id`, `modified`, `created`) VALUES (1, 0, 6, 30, '2011-11-20 15:18:46', '2011-11-20 15:18:46') 
INSERT INTO `template_columns` (`block`, `column`, `grid`, `template_id`, `modified`, `created`) VALUES (1, 1, 6, 30, '2011-11-20 15:18:46', '2011-11-20 15:18:46') 

어떤 문제가 발생했는지에 대한 아이디어가 있습니까? 그리고 조인 테이블에 모델 이름을 추가하는 방법은 무엇입니까? 또한

+0

가능한 중복 질문/6677602/cakephp-update-extra-field-on-habtm-join-table – mark

답변

관련 문제