Get()方法拉取数据然后foreach
Get() method to pull data and then foreach
我打算使用 get() 方法从 orderDetail table 中提取所有具有相同订单 ID 的行,然后循环将税列的所有值添加到 $total_ 变量。然后我打算将 $total_ 添加到卖家余额中。
我想获得列中用相同 order_id 提取的税值总和。我尝试使用 sum() 但似乎仍然存在错误。唯一有用的是当我使用 first() 时它只得到我的条件为真的第一行。但那样的话,我只能使用一个税值。在某些情况下,我有两个具有相同 order_id 的项目(当我们在购物车中有不同的产品时)。他们以相同的 order_id 进入数据库。所以,我现在正在寻找一种方法来提取具有相同 order_id 的所有行,然后获取税列的总和。
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();
}
您可以使用生成器的 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 - Aggregates sum
Laravel 8.x Docs - Eloquent - Retrieving Single Models / Aggregates - Retrieving Aggregates sum
Laravel 8.x Docs - Queries - Update Statements - Increment & Decrement increment
我打算使用 get() 方法从 orderDetail table 中提取所有具有相同订单 ID 的行,然后循环将税列的所有值添加到 $total_ 变量。然后我打算将 $total_ 添加到卖家余额中。
我想获得列中用相同 order_id 提取的税值总和。我尝试使用 sum() 但似乎仍然存在错误。唯一有用的是当我使用 first() 时它只得到我的条件为真的第一行。但那样的话,我只能使用一个税值。在某些情况下,我有两个具有相同 order_id 的项目(当我们在购物车中有不同的产品时)。他们以相同的 order_id 进入数据库。所以,我现在正在寻找一种方法来提取具有相同 order_id 的所有行,然后获取税列的总和。
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();
}
您可以使用生成器的 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 - Aggregates sum
Laravel 8.x Docs - Eloquent - Retrieving Single Models / Aggregates - Retrieving Aggregates sum
Laravel 8.x Docs - Queries - Update Statements - Increment & Decrement increment