1

我有三张桌子product,,,categoryproduct_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,
));

如果我进行搜索,类别会在急切加载中加载,并且除了搜索之外没有类别。
如何按类别搜索产品,但在$data->categories所有类别中,没有按第二关系加载它们,Andrey Vorobyev 怎么说?

对不起英语不好

4

2 回答 2

1

我找到了答案

如果我使用$criteria->with = array('categories'=>array('select' => false)) and call $data->categories它,它会延迟加载,一切都很好。

于 2013-07-27T12:50:21.680 回答
0

首先,我认为是用不同的名称建立两个相同的关系:一个用于搜索,另一个用于显示。
因为,我们在设置条件的时候,是按类别过滤帖子的,不能得到所有的类别。但是你会有一个更多的关系,当你打印帖子时,你可以在延迟加载中获取所有类别。

于 2013-07-27T10:00:34.893 回答