2012-01-09 16 views
0

これは私の状況です、私は複数のカテゴリに属する​​ことができる投稿モデルがあります。これは私が行う方法を考え出し:CakePHP - HABTMの関係とfind()

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

とカテゴリモデル:

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

、これはすべてが正常に動作し、すべてのこと。私はGoogleで答えを見つけるためにしようとしてきた

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, 
      ), 
     ), 
    )); 

EDITは:申し訳ありませんが、間違ったコードを見ていた

答えて

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

ありがとう、これは動作しますが、1つの問題があります。ポストモデルはユーザーに属します。しかし、あなたの方法から得たリストには、関連付けられたユーザー名とユーザーデータはありません。これはこのように動作することを意図しているのですか、それとも他の方法で入手できますか?そうでなければ、すばらしい答えです。 :) – vanneto

+1

findメソッドのparam配列に 'recursive' => 2を追加すると十分です。 – kaklon

+0

Works :)もう1つのことですが、ユーザーがカテゴリをブラウズするとします。今、彼はそのカテゴリーのニュースを日付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