如何将多个数据与它们所需的关系一起发送到视图中
How to send multiple data into view with their required relationships
我正在开发一个 Laravel 5.8 项目,它是一个在线商店。在这个项目中,我想为管理员添加“打印顺序因素”功能。
所以我做了一个这样的表格:
<form method="POST" action="{{ route('orders.newprint') }}">
@csrf
@forelse($orders as $order)
<tr>
<td><input class="form-check-input" name="orderCheck[]" type="checkbox" value="{{ $order->ord_id }}"> </td>
<td>{{ $order->ord_id }}</td>
<td>{{ $order->status_label }}</td>
<td>{{ $order->customer_name }}</td>
<td>{{ $order->ord_total }}</td>
</tr>
@empty
<td colspan="7" class="text-center">No order to show</td>
@endforelse
</form>
所以管理员基本上可以 select 多个这样的订单:
我正在尝试将订单 ID 作为数组发送:
<input class="form-check-input" name="orderCheck[]" type="checkbox" value="{{ $order->ord_id }}">
所以在点击打印所有订单因素后,它应该会在一页上显示所有订单因素。
因此,为了做到这一点,我在控制器中添加了这个方法:
public function prnpriview(Request $request)
{
$orders = $request->input('orderCheck');
foreach($orders as $ord){
$order = Order::find($ord);
$args = [
'order' => $order,
'address' => $order->order_address->first(),
'details' => $order->orderDetail,
'sendType' => $order->productSubmit,
'coupons' => $this->cartController->computeDiscountForOutRequests($order->ord_object_id, $order->ord_creator_id),
'user' => User::query()->find($order->ord_creator_id)
];
}
return view('admin.shop.orders.newprint', $args);
}
但是问题在于,它只发送最后一个 order
而不是全部。
用于一个订单的控制器代码工作正常。但是我需要将多个订单传递给 newprint.blade.php
.
所以问题是,如何发送所有已被用户检查过的订单并发送给他们查看他们的 args
数组(必需的关系)?
非常感谢你们对此的任何想法或建议...
谢谢。
更新#1
这是我在 newprint.blade.php
的代码,它显示了打印的每个订单因素详细信息:
@foreach($args as $arg)
<p>Order Id:
<strong>
{{ digits2persian($order->ord_id) }}
</strong>
</p>
<p>Address:
<strong>
{{ $address->province_relation->prv_name }}،
{{ $address->city_relation->cit_name }}،
{{ $address->address }}
</strong>
</p>
...
@endforeach
更新#2:
如果我在控制器中 return
之前 dd($args)
,并且如果我在视图中 {{ dd($args) }}
,我得到的结果是:
你很接近 :) 你需要使用 $arg
创建一个数组数组。现在,在循环中,它会在每次循环遍历数组时替换数组的值。
$args = [];
foreach($orders as $ord){
$args[] = [
...
];
}
我正在开发一个 Laravel 5.8 项目,它是一个在线商店。在这个项目中,我想为管理员添加“打印顺序因素”功能。
所以我做了一个这样的表格:
<form method="POST" action="{{ route('orders.newprint') }}">
@csrf
@forelse($orders as $order)
<tr>
<td><input class="form-check-input" name="orderCheck[]" type="checkbox" value="{{ $order->ord_id }}"> </td>
<td>{{ $order->ord_id }}</td>
<td>{{ $order->status_label }}</td>
<td>{{ $order->customer_name }}</td>
<td>{{ $order->ord_total }}</td>
</tr>
@empty
<td colspan="7" class="text-center">No order to show</td>
@endforelse
</form>
所以管理员基本上可以 select 多个这样的订单:
我正在尝试将订单 ID 作为数组发送:
<input class="form-check-input" name="orderCheck[]" type="checkbox" value="{{ $order->ord_id }}">
所以在点击打印所有订单因素后,它应该会在一页上显示所有订单因素。
因此,为了做到这一点,我在控制器中添加了这个方法:
public function prnpriview(Request $request)
{
$orders = $request->input('orderCheck');
foreach($orders as $ord){
$order = Order::find($ord);
$args = [
'order' => $order,
'address' => $order->order_address->first(),
'details' => $order->orderDetail,
'sendType' => $order->productSubmit,
'coupons' => $this->cartController->computeDiscountForOutRequests($order->ord_object_id, $order->ord_creator_id),
'user' => User::query()->find($order->ord_creator_id)
];
}
return view('admin.shop.orders.newprint', $args);
}
但是问题在于,它只发送最后一个 order
而不是全部。
用于一个订单的控制器代码工作正常。但是我需要将多个订单传递给 newprint.blade.php
.
所以问题是,如何发送所有已被用户检查过的订单并发送给他们查看他们的 args
数组(必需的关系)?
非常感谢你们对此的任何想法或建议...
谢谢。
更新#1
这是我在 newprint.blade.php
的代码,它显示了打印的每个订单因素详细信息:
@foreach($args as $arg)
<p>Order Id:
<strong>
{{ digits2persian($order->ord_id) }}
</strong>
</p>
<p>Address:
<strong>
{{ $address->province_relation->prv_name }}،
{{ $address->city_relation->cit_name }}،
{{ $address->address }}
</strong>
</p>
...
@endforeach
更新#2:
如果我在控制器中 return
之前 dd($args)
,并且如果我在视图中 {{ dd($args) }}
,我得到的结果是:
你很接近 :) 你需要使用 $arg
创建一个数组数组。现在,在循环中,它会在每次循环遍历数组时替换数组的值。
$args = [];
foreach($orders as $ord){
$args[] = [
...
];
}