Php 为在拉雷维尔接收部分交付的产品创造条件
这是我尝试接收应用程序部分交付的第二天。我和你们这些大师们在这里碰碰运气 我有这两张表,第一张是order_items表 此表包含采购订单中的项目。另一张桌子是仓库 其中包含部分接收的项目 我得到了逻辑,我必须对仓库1.order\u item\u id进行分组,这样我就可以从order\u number\u id=22中得到项目的总和,这是order\u items表中的id。为了向大家展示,下面是我的代码Php 为在拉雷维尔接收部分交付的产品创造条件,php,laravel,if-statement,conditional-statements,Php,Laravel,If Statement,Conditional Statements,这是我尝试接收应用程序部分交付的第二天。我和你们这些大师们在这里碰碰运气 我有这两张表,第一张是order_items表 此表包含采购订单中的项目。另一张桌子是仓库 其中包含部分接收的项目 我得到了逻辑,我必须对仓库1.order\u item\u id进行分组,这样我就可以从order\u number\u id=22中得到项目的总和,这是order\u items表中的id。为了向大家展示,下面是我的代码 public function viewdeliveryItems($id) {
public function viewdeliveryItems($id)
{
$partialDeliveries = Warehouse1stocks::where('order_id', '=', $id)
->select(
'order_item_id',
DB::raw('SUM(stock_in_qty) as stock_in_qty'))->groupBy('order_item_id')->get();
// DB::raw('SUM(stock_out_qty) as stock_out_qty'))->groupBy('order_item_id')->get();
$order = Orders::find($id);
$orderItems = $order->orderItems;
$warehouse1stocks = Warehouse1stocks::all('order_id','order_item_id','stock_in_qty')->where('order_id','=',$id);
return view('orders.delivery')->with('order', $order)
->with('warehouse1stocks', $warehouse1stocks)
->with('partialDeliveries', $partialDeliveries);
}
在我的代码中,您将看到我将order\u item\u id分组并调用了order items,但您可以看到它们唯一的链接是order\u id
只是为了给你展示一种有说服力的联系,
订单项模型
仓库库存模型
在我的blade中,正如我在介绍中提到的,我已经用了将近两天的时间完成了这项工作,我刚刚开始编写我自己的代码,这就是为什么我要依赖谷歌上提供的教程和建议中的大部分代码库,我想我已经尝试了太多的方法,由于绝望,我最终选择了这种方法
@foreach($order->orderItems as $key=>$orderItem)
<tr>
<td>{{ $orderItem->product_code }}</td>
<td>{{ $orderItem->product_name }}</td>
<td>
@foreach($partialDeliveries as $partialDelivery)
@if($partialDelivery->order_item_id == $orderItem->id)
@php
$remainingDeliveries = $orderItem->quantity - $partialDelivery->stock_in_qty;
@endphp
@else
@php
$remainingDeliveries = $orderItem->quantity;
@endphp
@endif
{!! Form::number('stock_in_qty[]', $remainingDeliveries,
['id'=>'stock_in_qty_'.$orderItem->id]) !!}
@endforeach
</td>
....
</tr>
@endforeach
我不能解释一切,因为我不能:
谢谢@Watercatman 如果你问为什么数量栏上的数量没有给你一个表格,或者为什么输入的返回值不正确,我可以看出你有一些问题。第一个问题是,您正在同一个空间中使用相同的ID创建n+1个数字输入表单项。这可能会阻止它们显示,并且永远不会生成可用的表单。这:
{!! Form::number('stock_in_qty[]', $remainingDeliveries,
['id'=>'stock_in_qty_'.$orderItem->id]) !!}
在你的内部for循环中。因此,对于该循环中的每个$partialDelivery,您将创建多个编号输入,其id完全相同'stock\u in\u qty'。$orderItem->id
我不能代表sql说话,因为我不知道什么是转储,但它确实可以帮助您计算控制器中剩余的$remainingDeliveries。在较大的循环中循环可能不是正确或干净地获得计算的最简单方法。但是,如果必须在blade文件中执行此操作,请将输入的数字移到@foreach循环之外,这样您就有了一个id的输入。您是正确的@Watercayman。我只是把数字字段移到循环外。但我现在仍然面临的是,如果条件不相等,剩余的变量是未定义的。。。
@foreach($order->orderItems as $key=>$orderItem)
<tr>
<td>{{ $orderItem->product_code }}</td>
<td>{{ $orderItem->product_name }}</td>
<td>
@foreach($partialDeliveries as $partialDelivery)
@if($partialDelivery->order_item_id == $orderItem->id)
@php
$remainingDeliveries = $orderItem->quantity - $partialDelivery->stock_in_qty;
@endphp
@else
@php
$remainingDeliveries = $orderItem->quantity;
@endphp
@endif
{!! Form::number('stock_in_qty[]', $remainingDeliveries,
['id'=>'stock_in_qty_'.$orderItem->id]) !!}
@endforeach
</td>
....
</tr>
@endforeach
@if (isset($partialDeliveries[$key]))
@foreach($partialDeliveries as $partialDelivery)
@if($partialDelivery->order_item_id == $orderItem->id)
@php
$remainingDeliveries = $orderItem->quantity - $partialDelivery->stock_in_qty;
@endphp
@endif
@endforeach
@endif
@if (!isset($partialDeliveries[$key]))
@php
$remainingDeliveries = $orderItem->quantity;
@endphp
@endif
{!! Form::number('stock_in_qty[]', $remainingDeliveries,
['id'=>'stock_in_qty_'.$orderItem->id]) !!}