php - yii2:将查询联合放在第一个查询的最后一个对象上
问题描述
我在 yii2 上有脚本:
$query = HrKaryawan::find()
->where(['hr_karyawan.outlet_id' => $params['outlet_id']]);
$subquery = (new \yii\db\Query())
->from('hr_karyawan')
->where(['=', 'id',1]);
$query->union($subquery, true);
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => array('pageSize' => 10),
]);
结果是子查询总是在每页的最后一个,在第 1 页的第 11 行,第 2 页的第 21 行,...
我只想在最后一行和最后一页上制作它。谁能帮我?
解决方案
它将显示 11,因为对第一个查询设置了限制,之后将附加子查询
(SELECT * FROM `hr_karyawan` LIMIT 10) UNION ALL ( SELECT * FROM `hr_karyawan` WHERE `id` = 1);
解决方案可能是使用包装查询:
$wrapperQuery = new Query();
$wrapperQuery->from($query);
你的代码看起来像这样:
$query = HrKaryawan::find()
->where(['hr_karyawan.outlet_id' => $params['outlet_id']]);
$subquery = (new \yii\db\Query())
->from('hr_karyawan')
->where(['=', 'id',1]);
$query->union($subquery, true);
$wrapperQuery = new Query();
$wrapperQuery->from($query);
$dataProvider = new ActiveDataProvider([
'query' => $wrapperQuery,
'pagination' => array('pageSize' => 10),
]);
推荐阅读
- azure - 如何在 Azure 数据工厂的数据流聚合活动中添加动态 GroupBy 列
- entity-framework - 在 EF Core 中检索数据时如何运行方法
- macos - 关于Tails下载安装的问题
- java - .jar 文件部署 - 无主要方法
- java - 如何找到不再需要的@SuppressFBWarnings 注释?
- android - 在 Android 上使用 Google Smartlock 时的自定义对话框
- reactjs - 网络请求失败时如何显示警报?
- transactions - 在 JMETER 中 - 如何在每个单独的请求级别实现 TPS 以进行 API 测试
- jasper-reports - 有没有办法将字段的值与 jasperReport 表达式编辑器中的参数值进行比较?
- cdn - 我应该在每个应用程序中还是在 api 网关中管理我的缓存控制标头?