0

テーブルがあります 1) tours (id, title) 2) カテゴリ (id, title) 3) tours_categories (tour_id, category_id)

モデルツアー:

public function relations () 
{ 
    return array ( 
          'Category' => array (self :: MANY_MANY, 
                               'Categories', 
                               'tours_categories (tour_id, category_id)'
          ), 
    ); 
} 

モデルのカテゴリ:

public function relations () 
{ 
    return array ( 
        'Tours' => array (self :: MANY_MANY, 
                         'Tours', 
                         'tours_categories (category_id, tour_id)'
        ), 
    ); 
} 

質問:

データベースでテーブル tours_categories を検索し、すべてのツアーを選択したい = 1 つのカテゴリ ID に ... 正しく行う方法

コントローラー ToursController で、このようなことをしたい

$tour = Tours::model()->with ('category')->findAllByAttributes (array ('category.id' => $id)); 

しかし、それはもちろん機能しません。どうやってするの?

4

1 に答える 1

1
$tours = Tours::model()->with(array(
            'category'=>array(
                'alias' => 'ct', //to avoid error ambiguous column category when implementing query 
                'condition'=>'ct.category_id = :cid',
                'params'=>array(':cid'=>$id
                )))
        )->findAll(); // you could put more condition for findAll, it returns array of Tour-s after filtered.

ところで、ちょっとしたことですが、categoryモデル Tour のリレーション MANY_MANY の名前は一致しません。categories代わりに変更する必要があります。更新したら、上記の原因のクエリも更新する必要があります。

于 2013-08-13T07:24:01.500 に答える