Laravel访问另一个迭代器

时间:2017-08-01 23:29:28

标签: php laravel-5.4 laravel-blade laravel-collection

我有db table LovColumnComments,它包含:

----------------------------------------------------
| id | view          | column       | description  |
----------------------------------------------------
| 1  | my_view       | object_id    | Object ID    |
| 2  | my_view       | description  | Description  |
----------------------------------------------------

我有另一个包含实际数据的表DataTable

-------------------------------------
| id |  object_id    | description  |
-------------------------------------
| 1  |  OBJ_01       | Object 01    |
| 2  |  OBJ_02       | Object 02    |
-------------------------------------

这两个表都作为集合传递给刀片视图。

我现在拥有的刀片模板是:

<table>
  <thead>
     <tr>
        @foreach ($columns as $column)
          <th>{{$column->description}}</th>
        @endforeach
     </tr>
   </thead>
   <tbody>
      @foreach ($data as $datum)
        <tr>
          <td>{{$datum['object_id']}}</td>
          <td>{{$datum['description']}}</td>
        </tr>
      @endforeach
   </tbody>
</table>

我想知道是否可以访问$data集合,而不是使用$datum['object_id']$datum['description']。这是因为,DataTable可以是任何db表,因此字段名称可以不同,但​​总是会有两列。

因此,$data集合将始终具有两列,但列名称可以不同。我需要一种更动态的方法来从$columns集合中获取列名。

类似于<td>{{$columns[0]}}</td><td>{{$columns[1]}}</td>

仅供参考,column $columns包含实际名称(即object_iddescription

由于

2 个答案:

答案 0 :(得分:0)

所以这是我在刀片视图中如何执行此操作的示例:

@if(count($data) > 0)
    @php
        $keys = array_keys($data[0]);
    @endphp
    @foreach($data as $d)
        @foreach($keys as $key)
            <!-- This is the dynamic value that works with any array -->
            {{$d[$key]}}
        @endforeach
    @endforeach
@endif

如果您有任何问题,请告诉我,我很乐意尝试和帮助!

答案 1 :(得分:0)

@foreach ($data as $datum)
  <tr>
    @foreach ($columns as $column)
      <td>{{$datum[$column->column]}}</td>
    @endforeach
  </tr>
@endforeach