2012-01-09 5 views
0

이것은 제 상황입니다, 여러 범주에 속할 수있는 게시 모델이 있습니다.CakePHP - HABTM 관계와 find()

class Post extends AppModel 
{ 
    var $hasAndBelongsToMany = array('Category'); 
} 

그리고 분류 모델 :

class Category extends AppModel 
{ 
    var $hasAndBelongsToMany = array ('Post'); 
} 

자,이 모든 벌금과 모든 작품이 내가하는 방법을 알아 냈어. 내가 구글에 대한 답을 찾기 위해 노력했습니다

class CategoriesController extends AppController { 
    function view ($id = 0) { 
     // doesnt work 
     $this->Category->Video->find ('all', array('conditions' => array('category_id' => $id)); 
    } 
} 

:하지만 그냥 사용하기 (1)의 ID로 예 "뉴스"에 대한 특정 카테고리에 속하는 게시물을 검색하는 방법을 알아낼 수 없습니다 그리고 CookBook하지만 아직 아무것도 발견하지 못했습니다. 누구든지 이것이 어떻게 달성 될 수 있는지 알고 있습니까?

감사합니다.

$this->Category->bindModel(array(
     'hasOne' => array(
      'CategoriesVideo' 
     ), 
    )); 
    return $this->Video->find('all', array(
     'conditions' => array(
      'CategoriesVideo.category_id' => $id, 
      ), 
     ), 
    )); 

편집이 : 죄송합니다 잘못된 코드를 찾고 있었어요

답변

2

비디오가 아닌 범주 및 포스트 모델에 연관성을 보여 주었을 때 비디오 모델에서 찾기를 수행하고 있습니다. 검색 할 경우 명시된 바와 같이

, "뉴스"카테고리의입니다 게시물 posts_controller.php에서 수행이 가정하면 오타 오류입니다

$this->Post->Category->find('all', array('conditions'=>array('Category.name'=>'News'))); 

을 또는 categories_controller.php에서

$this->Category->find('all', array('conditions'=>array('Category.name'=>'News'))); 
+0

감사합니다. 그러나이 문제는 작동하지만 포스트 모델이 사용자에게 속한 한 가지 문제가 있습니다. 그러나 귀하의 방법에서 얻은 목록에는 연결된 사용자 이름과 사용자 데이터가 없습니다. 이것은 이와 같이 작동하도록 의도 되었습니까? 아니면 다른 방법으로 얻을 수 있습니까? 그렇지 않으면, 중대한 응답, 빨리, 너무. :) – vanneto

+1

find 메서드의 param 배열에 'recursive'=> 2를 추가하면 충분합니다. – kaklon

+0

작동 :) 사용자가 카테고리를 탐색 할 때 한 가지 더 말하지만. 이제 그는 해당 카테고리의 뉴스를 날짜 ASC별로 정렬하려고합니다. 카테고리 컨트롤러에서이를 수행 할 수 있습니까, 아니면 뉴스 컨트롤러에서해야합니까? – vanneto

0

당신은 작업을해야 다음을 수행 할 수 있습니다. 이것은 효과가있다.

+0

작동하지 않습니다

는 여기 HABTM 관계에 대해 쿼리하는 다양한 방법을 설명 CakePHP의 책의 페이지입니다. 그런 HABTM 관계에 대해 질의 할 수는 없습니다. – Dave

0

당신의 가장 쉬운 건 범주 자체를 검색하고 recursive 수준도 관련 게시물 반환 할 수 있습니다 (또는 비디오, 또는 당신이하고있는 무엇이든)하는 것입니다 :

//in the category controller 
$this->Category->find('all', array('conditions'=>array('Category.id'=>$id)); 

HABTM 데이터를 검색하는 데는 여러 가지 옵션이 있지만 위의 방법이 가장 쉽습니다.

http://book.cakephp.org/1.3/view/1044/hasAndBelongsToMany-HABTM