2015-01-11 4 views
2

그래서 Post 및 Event라는 두 가지 모델이 있습니다. 둘 다 서로 "haveAndBelongToMany"입니다. Post.php 모델 파일에서 CakePHP - 새 레코드로 저장할 HABTM 데이터를 가져올 수 없습니다.

나는이있다 :

public $hasAndBelongsToMany = array(
     "Posts"=>array(
      "className"=>"Post", 
      "joinTable"=>"events_posts", 
      "foreignKey"=>"event_id", 
      "associationForeignKey"=>"post_id", 
      "unique"=>true 
     ) 
    ); 

내 데이터베이스라는 테이블 "events_posts"가 다음 Event.php 모델 파일에서

public $hasAndBelongsToMany = array(
    "Events"=>array(
     "className"=>"Event", 
     "joinTable"=>"events_posts", 
     "foreignKey"=>"post_id", 
     "associationForeignKey"=>"event_id", 
     "unique"=>true 
    ) 
); 

을,이이 post_id, event_id의 두 필드가 있습니다.

$post_data = array(
     "Post"=>array(
      "image_id"=>$entry['id'], 
      "image_url"=>$entry['images']['standard_resolution']['url'], 
      "image_thumb"=>$entry['images']['low_resolution']['url'], 
      "image_text"=>$entry['caption']['text'], 
      "status"=>'1', 
      "created_on"=>$entry['created_time'], 
      "instagram_user_id"=>$user_id 
     ), 
     "Event"=>array(
      "Event"=>array($event['Event']['id']) 
     ) 
    ); 
$result = $this->Post->save($post_data,array('deep' => true)); 

그것은 새 게시물 데이터를 저장하지만,에 관계를 저장 아니에요 :

자, 수동 (안 양식을 통해) 정보를 저장해야 다른 컨트롤러에서 나는이 코드 덩어리가 events_posts 테이블 ... 누군가 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까? 이것은 절대적으로 정신 나간다.

답변

0

연관을 위해 단일화 모델 이름을 사용하십시오. Model and Database Conventions을 따르고 Post 모델에 다음 코드를 추가하십시오.

class Post extends AppModel { 

    public $hasAndBelongsToMany = array(
     "Event" 
    ); 

} 

컨트롤러에서 데이터를 저장하려면 save ($ post_data) 만 필요합니다.

$result = $this->Post->save($post_data); 

CakePHP 2.6.0 및 CakePHP 2.3.4로 테스트되었습니다.

+0

재미 있습니다. 첫째, 감사합니다. 처음 다른 페이지를 설정할 때 $ hasAndBelongsToMany에 대한이 간단한 설정이 작동하지 않았습니다. 그러나, 나는 그것들이이 문제보다 훨씬 쉬운 문제가 될 것이라고 생각한다. 다시 한번 감사드립니다. – user240352

관련 문제