php - Lumen API 选择按聚合分组的数据
问题描述
我目前正在为我的后端 API 使用 Lumen 5.7。我需要使用左连接从多个表中选择一些字段。我有以下查询(普通 mysql 查询)
SELECT issue_id,issue_receipt_id, date_format(issue_datetime, '%d-%m-%Y') as issue_datetime,
issue_item,sum(issue_wt) as issue_wt, round(avg(issue_pure),3) as issue_pure,
sum(issue_fine) as issue_fine, sum(issue_cash) as issue_cash,
sum(receipt_wt) as receipt_wt, sum(receipt_fine) as receipt_fine,
pure_name as issue_item_name
FROM item_issues
LEFT JOIN receipt_items ON receipt_id = issue_receipt_id
LEFT JOIN purities ON pure_id = issue_item
group by issue_receipt_id;
我已经尝试过流明,
$receipts = DB::table('item_issues')
->leftJoin('receipt_items', 'receipt_items.receipt_id', '=', 'item_issues.issue_receipt_id')
->leftJoin('purities', 'purities.pure_id', '=', 'item_issues.issue_item')
->select('issue_id', 'issue_receipt_id', DB::raw("date_format(issue_datetime, '%d-%m-%Y') as issue_datetime"), 'issue_item', 'pure_name', DB::raw('sum(issue_wt) as issue_wt'),
DB::raw('round(avg(issue_pure),3) as issue_pure'),
DB::raw('sum(issue_fine) as issue_fine'),
DB::raw('sum(issue_cash) as issue_cash'),
DB::raw('sum(receipt_wt) as receipt_wt'),
DB::raw('sum(receipt_fine) as receipt_fine'))
->groupBy('item_issues.issue_receipt_id', 'item_issues.issue_item')->get();
但它会产生语法错误或访问冲突等错误:1055 Expression #1 of SELECT list is not in GROUP BY 子句并包含非聚合列“item_issues.issue_id”,它在功能上不依赖于 GROUP BY 子句中的列;但是我必须选择上述字段,如何做到这一点没有问题。而且我试图禁用严格模式,但我不知道在 .env 或其他文件中在哪里禁用此选项。我在流明中找不到 database.config。任何人都可以在这方面提供帮助。
解决方案
默认情况下'config/database.php'
,Lumen 应用程序中没有命名任何文件夹。但可以随意将此配置文件添加到您的流明应用程序中,就像在 laravel 中一样。
并将以下代码粘贴到您的 database.php 文件中。
return [
'default' => 'mysql',
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'strict' => false
]
]
]
这里重要的是'strict' => false
模式。
推荐阅读
- python-3.x - 如何将元素列表转换为 n*n 空格分隔排列,其中 n 是列表中的元素数
- rust - 我们可以在 crate 安装期间下载一些东西并设置环境变量吗?
- python - Pandas 数据框构建汇总表
- django-rest-framework - 无法使用两个模型 id 字段保存
- android - Android ChipGroup IllegalArgumentException,即使使用 MaterialComponents 主题
- django - Django将模型字段更改为视图
- c++ - 我需要批量并行编程吗?
- excel - 如何使用 aspose 动态公式进行 fillDown 和 fillRight
- java - Akka 使用 Behaviors.withTimers 获取上下文
- scipy - scipy.stats.lognorm.expect 返回一个奇怪的结果