yii2:通过关系id获取记录

时间:2015-07-26 07:56:26

标签: activerecord relational-database yii2 junction-table

我有关系的图像模型:

public function getAlbums()
{
    return $this->hasMany(ImagesTerms::className(), ['id' => 'term_id'])
                ->viaTable(ImagesTermsRelations::tableName(), ['object_id' => 'id'])
                ->andWhere(['type'=>'album']);
}

在图像视图页面上,我想显示具有相同相册的随机图像。有人可以帮忙吗?

我尝试了以下查询,但它没有给我我想要的东西:

$related = Images::find()->with([
        'albums' => function($query) {
            $query->andWhere(['in', 'id', [2]]);
        }
])->where(['status'=>'1'])->orderBy('rand()')->limit(9)->all();

此查询排除其他相册,但不包括图片。显示包含其他相册的图像,但没有相册标记。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题:

$related = Images::find()->joinWith([
    'albums' => function($query) {
        $query->andWhere(['in', 'images_terms.id', [1,2,3]);
    }
])->where(['images.status'=>'1'])->orderBy('rand()')->limit(9)->all();