【问题标题】:Get() method to pull data and then foreachget() 方法拉取数据然后foreach
【发布时间】:2022-01-18 00:58:23
【问题描述】:

我打算使用 get() 方法从 orderDetail 表中提取所有具有相同订单 ID 的行,并循环将税列的所有值添加到 $total_ 变量。然后我打算将 $total_ 添加到卖家余额中。

我想获取列中使用相同 order_id 提取的税值的总和。我尝试使用 sum() 但似乎仍然存在错误。唯一有效的是当我使用 first() 时,它只得到我的条件为真的第一行。但这样一来,我只能使用一个税值。在某些情况下,我有两个具有相同 order_id 的商品(当我们在购物车中有不同的产品时)。它们以相同的 order_id 进入数据库。所以,我现在正在寻找一种方法来提取具有相同 order_id 的所有行,然后获取 tax 列的总和。

if ($request->status == 'cancelled' && $order->payment_status == 'paid') {
    $commissionHistoriesnow = \App\Models\CommissionHistory::where('order_id', $request->order_id)->get();
    $total__ = 0;
    foreach ($commissionHistoriesnow as $key => $commissionHistorynow) {
        if($commissionHistorynow->admin_commission != null) {
            $total__ += $commissionHistorynow->admin_commission;
        }
    }
    $seller = Seller::where('user_id', $commissionHistoriesnow->seller_id)->first();
    $seller->admin_to_pay += $total__;
    $seller->save();
}

【问题讨论】:

  • 您需要什么帮助?这不起作用吗? ...而且您似乎只想获得一列的“总和”
  • 是的,我想获取列中使用相同 order_id 提取的税值的总和。我尝试使用 sum() 但似乎仍然存在错误。唯一有效的是当我使用 first() 时,它只得到我的条件为真的第一行。但那样的话,我只能使用一个税值......在某些情况下,我有两个具有相同 order_id 的商品(当我们在购物车中有不同的产品时)。它们以相同的 order_id 进入数据库。所以,我现在正在寻找一种方法来提取具有相同 order_id 的所有行,然后获取 tax 列的总和。谢谢...
  • $total = CommissionHistory::where('order_id', $request->order_id)->sum('admin_commission')
  • @lagbox。这无缝地工作。它不仅解决了问题,而且重构非常出色。谢谢楼主!
  • @lagbox。请将建议的解决方案复制到答案部分,以便我将其作为最佳答案进行检查。再次感谢。

标签: php laravel laravel-8


【解决方案1】:

您可以使用 Builder 的 sum 方法为您获取该列的总和,而无需检索所有记录并对其进行迭代:

$total = CommissionHistory::where('order_id', $request->order_id)
    ->sum('admin_commission');

补充:

此外,您可以在模型上使用increment 方法来增加“admin_to_pay”字段并在数据库中更新它(这会触发模型事件):

$seller->increment('admin_to_pay', $total);

如果您不担心事件并且这种情况下只有一条记录,您可以在构建器本身上调用increment 来更新您要查询的记录:

Seller::where('user_id', $commissionHistoriesnow->seller_id)->increment('admin_to_pay', $total);

Laravel 8.x Docs - Queries - Running Database Queries - Aggregatessum

Laravel 8.x Docs - Eloquent - Retrieving Single Models / Aggregates - Retrieving Aggregatessum

Laravel 8.x Docs - Queries - Update Statements - Increment & Decrementincrement

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 2021-10-08
    • 1970-01-01
    相关资源
    最近更新 更多