我如何获取所附屏幕截图的数组数。 在这种情况下,我想要的号码是 2
public function update(Request $request, $jobId)
{
//dd($request);
// cast into a collection use the collect() helper
$collection = collect($request);
for ($i=0; $i < $collection->count(); $i++) {
//dd(count($request));
$subJob = SubJob::Find($request->get('id')[$i]);
$subJob->job_id = $jobId;
$subJob->name = $request->get('name')[$i];
$subJob->size = $request->get('size')[$i];
$subJob->medium = $request->get('medium')[$i];
$subJob->feature = $request->get('feature')[$i];
$subJob->qty = $request->get('qty')[$i];
$subJob->price = $request->get('price')[$i];
$subJob->total = $request->get('qty')[$i] * $request->get('price')[$i];
$subJob->save();
}
$ collection-> count()给出值 9
还有其他方法可以运行循环直到结束吗? 例如,在Blade中,我们有 $ loop-> last ,但是在这里,我正在控制器级别工作
<form action="{{ route('employee.subjob.update',$job->id) }}" method="post"><br>
@csrf
@method('PUT')
@foreach ($subJobs as $subJob)
<input type="hidden" name="id[]" value="{{$subJob->id}}">
<tr>
<td><input type="text" name="name[]" value="{{$subJob->name}}"></td>
<td><input type="text" name="size[]" value="{{$subJob->size}}"></td>
<td>
<textarea name="medium[]" rows="3" cols="20">{{$subJob->medium}}</textarea>
</td>
<td>
<textarea name="feature[]" rows="3" cols="20">{{$subJob->feature}}</textarea>
</td>
<td><input type="text" name="qty[]" value="{{$subJob->qty}}"></td>
<td><input type="text" name="price[]" value="{{$subJob->price}}"></td>
<td><input type="text" name="total[]" value="{{$subJob->total}}" disabled></td>
</tr>
@endforeach
<button type="submit" class="btn btn-primary"> Update Job No {{$job->id}}</button>
</form>
答案 0 :(得分:1)
问题在于如何将数据发送到后端。看来,您是按属性(id
的数组,然后name
的数组,依此类推)分组,而不是按“类”(包含所有属性id
的数组)分组,name
,...)。
因此,您可以通过两种方式解决此问题。
对于第一种方法,有一些指南/教程可以为您提供帮助。因此,以免进行第二个。
public function update(Request $request, $jobId)
{
/** This should output 2 */
$size = count(collect($request)->get('id'));
// Try: dd($size);
for ($i = 0; $i < $size; $i++)
{
$subJob = SubJob::Find($request->get('id')[$i]);
$subJob->job_id = $jobId;
$subJob->name = $request->get('name')[$i];
$subJob->size = $request->get('size')[$i];
$subJob->medium = $request->get('medium')[$i];
$subJob->feature = $request->get('feature')[$i];
$subJob->qty = $request->get('qty')[$i];
$subJob->price = $request->get('price')[$i];
$subJob->total = $request->get('qty')[$i] * $request->get('price')[$i];
$subJob->save();
}
}
答案 1 :(得分:0)
也许尝试count($ collection-> items)
答案 2 :(得分:0)
直接从您的问题“我如何获得所附屏幕截图的数组数”
根据您的问题,这是您的操作方式
$arrayCount = 0;
foreach ($request->request as $req)
{
// this will check for array and check the array has 2 elements
if (is_array($req) && is_array($req) == 2)
{
// your logic here
}
}
我在这里所做的就是获取请求对象的request属性。这使我可以遍历请求对象中的每个属性。然后,我只是在检查该属性是否为数组。 但是在这里,我仅向您展示了如何进入阵列。一旦进入循环数组,您就可以做任何想要的事