0

我有表 1) tours (id, title) 2) categories (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 并选择所有 tours = 到一个类别 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 回答