Php Yii框架2.0活动记录

Php Yii框架2.0活动记录,php,join,yii,eager-loading,yii2,Php,Join,Yii,Eager Loading,Yii2,我正在使用Yii framework 2.0,我有一个如下所示的数据库表 id active key 1 0 xx 2 1 xx 3 0 zzz 4 0 wwww 5 1 wwww 6 1 qqqqq 我希望获取“active”为1且“key”与“active”为0的记录的“key”相同的记录。我想要的结果是 id active key 2

我正在使用Yii framework 2.0,我有一个如下所示的数据库表

id   active   key
 1   0        xx
 2   1        xx
 3   0        zzz
 4   0        wwww
 5   1        wwww   
 6   1        qqqqq   
我希望获取“active”为1且“key”与“active”为0的记录的“key”相同的记录。我想要的结果是

 id   active   key
  2   1        xx
  5   1        wwww
这个问题可能不容易理解,所以我用下面的代码示例来支持这个问题。这是我想要的结果

$allModel = Model::find()->where(['active' => 0])->all();

$arrModelActive1 = [];

foreach($allModel as $model) {
     $modelActive1 = Model::find()->where['active' => 1, 'key' => $model->key]->all();

     $arrModelActive1[] = $modelActive1;
}

return $arrModelActive1;
我可以用上面的代码示例来解决这个问题,但问题是我在foreach循环中执行查询,这可能会降低性能。因此,我正在寻找Yii 2.0可能提供的连接或快速加载解决方案,它可以使用相同的表或所谓的自连接操作进行操作

示例: 您的关系为
公共函数getTest()
{
返回$this->hasMany(self::className(),['key'=>'key'])
->其中('active=:active',[':active'=>1]);
}

然后,您必须选择活动字段==0的项目

$model = Model::find(['active' => 0])->all(); var_dump($model->test);