【发布时间】:2016-12-08 06:59:31
【问题描述】:
我有两个模型,通过联结表建立关系。所以,我试图从 db 中获取一些没有这种关系的模型。
我可以通过this way 做到这一点。
但是如何通过查询来做到这一点?使用 with 或 joinWith 方法,并在联结表列检查 IS NULL ?
【问题讨论】:
-
是的,完全一样。
标签: activerecord yii2 relationship
我有两个模型,通过联结表建立关系。所以,我试图从 db 中获取一些没有这种关系的模型。
我可以通过this way 做到这一点。
但是如何通过查询来做到这一点?使用 with 或 joinWith 方法,并在联结表列检查 IS NULL ?
【问题讨论】:
标签: activerecord yii2 relationship
创建联结的模型并将其添加到您的 AR 模型方法中:
/**
* @return ActiveQuery
*/
public function getJunctions()
{
return $this->hasMany(Junction::className(), ['someId' => 'id']);
}
然后你可以用它来查询:
$query = Model::find()
->joinWith([
'junctions' => function (\yii\db\ActiveQuery $query) {
$query->andWhere(['{{junction}}.id' => null]);
}
], false);
【讨论】:
where,但在这种情况下,我不需要一级条件。在另一种情况下,andWhere 相当 where。