У меня есть отношение «многие ко многим» с тремя таблицами: Category
, Product
, ProductCategory
. Отношение в Category
:
public function getProductCategories()
{
return $this->hasMany(ProductCategory::className(), ['category_id' => 'id']);
}
Отношение в Product
:
public function getProductCategories()
{
return $this->hasMany(ProductCategory::ClassName(), ['product_id' => 'id']);
}
А в ProductCategory
public function getProduct()
{
return $this->hasOne(Product::className(), ['id' => 'product_id']);
}
public function getCategory()
{
return $this->hasOne(Category::className(), ['id' => 'category_id']);
}
В моем контроллере категорий я использовал этот код, чтобы показать продукты, которые мне нужны, в соответствии с их категорией (один ко многим):
$cats = Category::findOne(['slug1'=>$slug1]);
$dataProvider = new ActiveDataProvider([
'query' => $query = Product::find()->where(['category_id' => $cats->id]),
'sort'=>array(
'defaultOrder'=>['id' => SORT_ASC],
),
'pagination' => [
'pageSize' => 9,
],
]);
Итак, вопрос в том, как заставить мой ActiveDataProvider запрашивать отношение «многие ко многим»?