我正在使用sql server 2008和yii2。 为了建立多对多关系,我创建了一个交叉引用表来连接两个查找表。 在CRUD生成之后,这是生成的模型关系。
/**
* @return \yii\db\ActiveQuery
*/
public function getEmailPageLists()
{
return $this->hasMany(EmailPageList::className(), ['email_id' => 'id']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getPages()
{
return $this->hasMany(PageLists::className(), ['page_id' => 'page_id'])->viaTable('email_page_list', ['email_id' => 'id']);
}
现在我如何链接这些表?我在哪里可以使用link()函数? 我想在插入表格时插入桥表。
答案 0 :(得分:1)
这是多对多关系的一个例子:
/**
* @return \yii\db\ActiveQuery
*/
public function getRecipes()
{
return $this->hasMany(Recipe::className(), ['id' => 'Recipe_id'])
->viaTable('RecipeProduct', ['Product_id' => 'id'], function($query) {
return $query->where('RecipeProduct.status = "active"');
});
}
或
/**
* @return \yii\db\ActiveQuery
*/
public function getProductProductCategories()
{
return $this->hasMany(ProductProductCategory::className(), ['Product_id' => 'id']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getCategories()
{
return $this->hasMany(ProductCategory::className(), ['id' => 'ProductCategory_id'])
->via('productProductCategories');
}
这是如何通过另一个模型定义关系的示例。在这种情况下,我通过上面定义的productProductCategories关系将产品绑定到类别。
这是Active记录的链接,滚动到bot到链接部分http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#working-with-relationships。我没有尝试通过多对多的记录链接。