我正在尝试使用以下 Eloquent 查询来获取该位置的库存值(value)。它正确地提取除返回 null 的库存值之外的所有内容(位置名称、地址、用户数量等)。我首先在 SQL 中构建了这个查询,效果很好,但由于某种原因在 eloquent 中不起作用。这是完全相同的查询。
$locations = \App\Models\Location::select(DB::raw('locations.*', 'SUM(inventory.part_price * inventory.quantity) AS inventory_value'))
->leftJoin('inventory', 'locations.id', '=', 'inventory.location_id')
->where('locations.company_id', '=', Auth::user()->company_id)
->groupBy('locations.id')
->get();
在 Blade 文件上,我使用 @foreach
循环。我尝试使用返回 null 的 {{$location->inventory_value}}
。我尝试在 Controller 中转储该特定变量,但它也为空。 Blade 文件如下所示:
它应该返回以下所有内容的库存值(value):
最终我的问题是如何修复此查询以获得库存价格和数量的总和以显示在 Blade 文件上?谢谢!
最佳答案
使用DB::raw
时将所有列作为第一个参数(在同一引号内)传递,例如:
DB::raw('locations.*, SUM(inventory.part_price * inventory.quantity) AS inventory_value')
您还可以使用selectRaw
使其看起来更干净,例如:
use App\Models\Location;
$locations = Location::selectRaw('locations.*, SUM(inventory.part_price * inventory.quantity) AS inventory_value')->leftJoin...
关于sql - Laravel Eloquent 中的 Sum 和页面返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55789221/