0

私は関係を持つ画像モデルを持っています:

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();

このクエリは、他のアルバムを除外しますが、画像は除外します。他のアルバムの画像が表示されますが、アルバム タグはありません。

4

1 に答える 1

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();
于 2015-07-26T08:40:37.213 に答える