Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie verwende ich JOIN in Yii2 Active Record für relationale Modelle?

Verwenden Sie joinWith . Weitere Informationen finden Sie unter

Zum Beispiel für Ihren Fallcode wie folgt:

Books::find()
    ->joinWith(['reviews' => function ($q) {
        $q->select(['COUNT(*) as cnt']);
    }])
    ->orderBy(['cnt' => 'DESC'])
    ->all();

EDIT:Ich finde eine bessere Lösung.

Books::find()
    ->joinWith(['reviews'])
    ->select(['*', 'COUNT(reviews.*) as cnt'])
    ->groupBy('RELATION_FIELD(Example: reviews.book_id)')
    ->orderBy(['cnt' => 'DESC'])
    ->all();