Yii many_many关系一直不起作用

时间:2014-02-06 19:31:02

标签: activerecord yii

我一直在关注this教程,以便在商业模式和类别模型之间建立多对多的关系。

我的表是:

business[id (PK),name,date,...]
business_category[businessID (FK to business.id), categoryID (FK to category.ID)]
category[id (PK), name, date,...]

在我的商业模式中,我有

public function relations()
{
    return array(
        'categories'=>array(self::MANY_MANY, 'Category',
                            'business_category(categoryID,businessID)'),
    );
}

在我的类别模型中我有

public function relations()
{
    return array(
        'businesses'=>array(self::MANY_MANY, 'Business',
                            'business_category(categoryID,businessID)'),
    );
}

当我传递给CListView小部件

'dataProvider'=>new CActiveDataProvider('Business', array(
                                'data'=>$model->businesses)),

其中$model是一个类别模型,然后我可以正常遍历每个商家的类别:foreach($data->categories as $category)

虽然$model = $this->loadModel($id) $model->categories,{{1}}没有任何结果。

可能出现什么问题?

2 个答案:

答案 0 :(得分:0)

假设你已经完成了一个var_dump $模型并且确保它不是NULL并且你实际上有一个从loadModel()返回的模型,我怀疑这可能是由于你的业务关系中列的顺序。尝试:

类别模型:

public function relations()
{
    return array(
        'businesses'=>array(self::MANY_MANY, 'Business',
                            'business_category(businessID,categoryID)'), // Swapped order of columns
    );
}

答案 1 :(得分:0)

我的错...我从查询中返回了多条记录,这就是为什么$model->categories无效。