Yii2-使用具有关系的连接表
我有一本书和一本封面。Yii2-使用具有关系的连接表,yii2,Yii2,我有一本书和一本封面。书籍和封面之间的关系是一对多,这意味着每本书可以有多个封面。因此,我有第三个表连接这两个表,图书封面关系 将这些转换为模型意味着我有3个模型 书籍 封面 封面关系 现在在图书模型中,我对相关的图书封面关系有以下关系 public function getBookCoverRels() { return $this->hasMany(BookCoverRelation::className(), ['book' => 'id']); }
书籍
和封面
之间的关系是一对多
,这意味着每本书可以有多个封面。因此,我有第三个表连接这两个表,图书封面关系
将这些转换为模型意味着我有3个模型
书籍
封面
封面关系
现在在图书
模型中,我对相关的图书封面关系
有以下关系
public function getBookCoverRels() {
return $this->hasMany(BookCoverRelation::className(), ['book' => 'id']);
}
不过,我想要的是能够获得所有的封面。有没有一种方法可以让我做到这一点,而不用先得到关系,然后再遍历它们 您可以使用方法让所有封面模型“通过”您的封面关系连接表,如Yii 2.0的最终指南所述:您可以使用方法让所有封面模型“通过”您的封面关系连接表,正如《Yii 2.0最终指南》中所述:您应该与书籍中的viaTable
建立关系
public function getCovers(){
return $this->hasMany( Covers::class,['id'=>'cover_id'])->viaTable('{{%book_cover_relation}}',['book_id'=>'id']);
}
像这样使用它
$qu = Books::findOne (['id'=>1]);
foreach($qu->covers as $cover){
echo $cover->name;
}
您应该在Books
Model中创建与viaTable
的关系
public function getCovers(){
return $this->hasMany( Covers::class,['id'=>'cover_id'])->viaTable('{{%book_cover_relation}}',['book_id'=>'id']);
}
像这样使用它
$qu = Books::findOne (['id'=>1]);
foreach($qu->covers as $cover){
echo $cover->name;
}