【问题标题】:Laravel - Get sum from different table and calculateLaravel - 从不同的表中获取总和并计算
【发布时间】: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 类的对象无法转换为数字。任何指南将不胜感激。

【问题讨论】:

    标签: laravel eloquent laravel-6


    【解决方案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 表中。
    猜你喜欢
    • 1970-01-01
    • 2021-07-17
    • 2020-07-26
    • 2019-07-04
    • 2019-02-23
    • 2019-01-18
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    相关资源
    最近更新 更多