我一直在关注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}}没有任何结果。
可能出现什么问题?
答案 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
无效。