Php Yii框架2.0活动记录
我正在使用Yii framework 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
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);