数组计数-Laravel

时间:2018-08-04 13:30:05

标签: laravel

enter image description here

我如何获取所附屏幕截图的数组数。 在这种情况下,我想要的号码是 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>

3 个答案:

答案 0 :(得分:1)

问题在于如何将数据发送到后端。看来,您是按属性(id的数组,然后name的数组,依此类推)分组,而不是按“类”(包含所有属性id的数组)分组,name,...)。

因此,您可以通过两种方式解决此问题。

  1. 改善在前端收集数据的方式,以将其发送回您的后台(推荐
  2. 立即处理背面的数据。

对于第一种方法,有一些指南/教程可以为您提供帮助。因此,以免进行第二个。

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属性。这使我可以遍历请求对象中的每个属性。然后,我只是在检查该属性是否为数组。 但是在这里,我仅向您展示了如何进入阵列。一旦进入循环数组,您就可以做任何想要的事