Laravel - 从不同的表中获取总和并计算
Posted
技术标签:
【中文标题】Laravel - 从不同的表中获取总和并计算【英文标题】:Laravel - Get sum from different table and calculate 【发布时间】:2021-10-19 02:45:09 【问题描述】:我是 laravel 的新手,我需要这方面的帮助。所以我有 3 个不同的表,如下所示。我必须根据两个表中的不同值来计算项目的数量。首先,我必须得到值表 1 和表 2 的总和,并按项目对其进行分组。之后减去结果并按数量列显示在我的刀片中的项目表中
物品表
|ID | Item | quantity |
+---+---------+-------------+
|1 | item1 | |
|2 | item2 | |
|3 | item3 | |
|4 | item4 | |
Value1 表
|ID | Item | value |
+---+---------+-------------+
|1 | item1 | 4757.34 |
|2 | item1 | 938.00 |
|3 | item1 | 0.00 |
|4 | item2 | 6574.3 |
|5 | item2 | 74.40 |
Value2 表
|ID | Item | value |
+---+---------+-------------+
|1 | item1 | 27.64 |
|2 | item1 | 0.00 |
|3 | item1 | 2.00 |
|4 | item2 | 64.34 |
|5 | item2 | 4.40 |
这是我到目前为止所做的
我的口才
public function getValue1()
$query = Value1::select(DB::raw("SUM(value) as value1"))
->groupBy('item')
->get();
return $query;
public function getValue2()
$query = Value2::select(DB::raw("SUM(value) as value2"))
->groupBy('item')
->get();
return $query;
我的控制器
$value1 = $myEloquentRepo->getValue1();
$value2 = $myEloquentRepo->getValue2();
$quantity = $value1 - $value2;
但似乎我没有正确执行此操作,因为我收到了一个错误 Illuminate\Database\Eloquent\Collection 类的对象无法转换为数字。任何指南将不胜感激。
【问题讨论】:
【参考方案1】:使用纯 SQL 更容易做到这一点。服务器会更快,因为对数据库的请求会少 3 倍。
$query = "INSERT into ItemTable
SELECT t1.item, (t1.qty - t2.qty) as 'quantity'
from (
select Item, sum(value) 'qty'
from table1
group by Item
) t1
join (
select Item, sum(value) 'qty'
from table2
group by Item
) t2 on t1.Item = t2.Item
";
DB::uprepared($query);
SELECT 查询本身将返回您需要的结果。然后根据您的 ItemTable 是空的还是已填充的,您插入或更新它。
【讨论】:
嗨,谢谢你,但我只需要在刀片视图表中显示数量,而不是将其插入我的 sql 表中。以上是关于Laravel - 从不同的表中获取总和并计算的主要内容,如果未能解决你的问题,请参考以下文章
复合求和:我想创建一个复合查询,它从两个不同的表中获取两列的单独总和,然后对它们求和
如何从不同的表中获取 customer_id 并在 laravel 中使用正确的方法避免重复?