【发布时间】:2014-12-01 14:46:24
【问题描述】:
我正在使用 Yii 框架 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 可能提供的连接或急切加载解决方案,它可以使用同一张表或所谓的自连接操作。
【问题讨论】:
标签: php join yii eager-loading yii2