php - 如何使用连接和求和构建 Laravel 查询?
问题描述
我正在尝试在 Laravel 应用程序中配置与此等效的查询:
SELECT SUM(balance), name FROM db.statement_versions
INNER JOIN statements ON statement_versions.statement_id = statements.id
INNER JOIN accounts ON statements.account_id = accounts.id
GROUP BY name;
这个查询在我在 MySQL Workbench 中运行时有效,但是当我尝试使用 Laravel 查询构建器将它转换为 PHP 时,我收到了一个错误。我最终想要的是accounts
用他们的总余额返回所有statement_versions.balance
。这是我现在的代码:
public static function query(LensRequest $request, $query)
{
return $request->withOrdering($request->withFilters(
$query->select('accounts.name')->sum('statement_versions.balance')
->join('statements', 'statement_versions.statement_id', '=', 'statements.id')
->join('accounts', 'statements.account_id', '=', 'accounts.id')
->orderBy('balance', 'desc')
->groupBy('statement_versions.balance', 'accounts.name')
));
}
我已经尝试了几个不同的变体,但我得到了错误SQLSTATE[42S22]: Column not found: 1054 Unknown column 'statement_versions.balance' in 'field list'
。我该如何解决这个问题并让查询正常工作?
解决方案
没有你的桌子会有点困难,但我希望这会给你一条通往你想要实现的目标的道路,它可能是幸运的,它会从第一枪开始:)
DB::table('statement_versions as sv')
->select([
'name',
DB::raw('sum(balance) as total')
])
->join('statements as s', 'sv.statement_id', '=', 's.id')
->join('accounts as a', 's.account_id', '=', 'a.id')
->groupBy('name');
推荐阅读
- select - 如何从 select * Flink 中选择字段
- facebook-graph-api - 参数标签 '(withReadPermission:, from:, handler:)' 不匹配任何可用的重载
- java - Java没有获取数组中保存的值
- javascript - JS(p5.js)画布乘法错误并以奇怪的分辨率绘制
- c# - SaveFileDialog 不断将文件保存到 Document 目录
- python - Google Tag Manager API Python 在创建标签时设置 overrideGaSettings = false
- python - 当我以随机顺序创建随机字符列表时,如何保存该列表以进一步使用该随机字符列表
- json - 无法在 Typescript 和 Angular 中正确发送 json
- java - 如何使用 SharedPreferences 检索已选择的照片
- python - 参数(n_neighbors)的参数值需要是一个序列