从表中排除值的样本

时间:2019-01-11 13:00:16

标签: php yii2

我有对象通过中间表与mano连接。

firstName

并获得有关城市的评论:

class City{ /**
     * @return \yii\db\ActiveQuery
     */
    public function getReviews()
    {
        return $this->hasMany(Reviews::className(), ['id' => 'review_id'])
            ->viaTable('city_review', ['city_id' => 'id']);
    }
}

问题: 如何从评论表中选择不在city_review表中的评论?

1 个答案:

答案 0 :(得分:0)

我不熟悉yii activerecord语法

但是您需要的查询在下面。

SELECT review.* FROM review 
LEFT JOIN city_review cr ON cr.city_id = review.id
WHERE cr.id IS NULL

此代码的结果应该与您需要的类似,但是您需要进行测试。

$reviews = Reviews::find()
    ->select('review.*')
    ->leftJoin('city_review', '`city_review`.`city_id` = `review`.`id`')
    ->where(['city_review.id' => NULL])
    ->with('city_reviews')
    ->all();