私は3つのテーブルを持っていproduct
ますcategory
、、product_category
製品モデルにこの関係を追加します
return array(
'categories' => array(self::MANY_MANY, 'Category',
'product_category(product_id, category_id)')
);
カテゴリを選択する場合は、カテゴリによる検索を使用したいと思います。
製品でactionIndex
は、このコードを追加します
$criteria=new CDbCriteria;
if($_GET['name'])
{
$criteria->with = array('categories');
$criteria->together = true;
$criteria->addCondition('categories.name = :name');
$criteria->params = array(':name'=>$_GET['name']);
}
$dataProvider=new CActiveDataProvider('Product',array(
'pagination'=>array(
'pageSize'=>10,
),
'criteria' => $criteria
));
$this->render('index',array(
'dataProvider'=>$dataProvider,
));
検索を行った場合、カテゴリは熱心な読み込みで読み込まれ、検索以外のカテゴリはありません。Andrey Vorobyev が言うように
、製品をカテゴリ別に検索しますが、 2 番目のリレーションによってそれらをロードせずにすべてのカテゴリが表示されます。$data->categories
下手な英語でごめんなさい