我有一个从Laravel的DB类返回的对象,我将其传递给我的视图:
@foreach ($appts as $appt)
<tr>
<td> {{ $appt->carrier }} </td>
<td> {{ $appt->carrier }} </td>
<td> {{ $appt->name }} </td>
<td> {{ Format::up($appt->lines_of_authority_c) }} </td>
<td> {{ Format::under($appt->status_c) }} </td>
<td> {{ Format::date($appt->effective_date_c) }} </td>
</tr>
@endforeach
除了我有另一个对象我需要迭代,但如果我将它包含在当前的foreach中,它显然会迭代多次。
无论如何都要做类似的事情:
@foreach($appts as $appt, $agents as $agent)
以上?像这样的多个foreach?或者某种方式来实现这种效果?
或者某种方式将它们合并在一起?他们都是stdClass。
答案 0 :(得分:2)
这是一个非常古老的问题,但我必须做类似的事情,在互联网上找不到任何东西。
我将第二个@foreach放在我需要的<td>
元素中。这样的事情。
@foreach($cars as $car)
<tr>
<td>{!! $car->number !!}</td>
<td>{!! $car->color !!}</td>
<td>{!! $car->time_of_rent!!}</td>
<td>
@foreach($clients as $client)
@if($client->rented_car === $car->id)
{!! $client->name !!}
@endif
@endforeach
</td>
</tr>
@endforeach
答案 1 :(得分:0)
@foreach ($appts as $appt)
@foreach ($agents as $agent)
<tr>
<td> {{ $appt->carrier }} </td>
<td> {{ $appt->carrier }} </td>
<td> {{ $appt->name }} </td>
<td> {{ Format::up($appt->lines_of_authority_c) }} </td>
<td> {{ Format::under($appt->status_c) }} </td>
<td> {{ Format::date($appt->effective_date_c) }} </td>
</tr>
@endforeach
@endforeach
答案 2 :(得分:0)
DB :: get()应该返回一个数组,因此您应该可以轻松地使用for循环。它不会那么漂亮,这假设你按照匹配的顺序返回它们,每个appt都有一个代理。
@for ($i=0; $i < count($appts); $i++)
<tr>
<td> {{ $appt[$i]['carrier'] }} </td>
<td> {{ $appt[$i]['name'] }} </td>
<td> {{ Format::up($appt[$i]['lines_of_authority_c']) }} </td>
<td> {{ Format::under($appt[$i]['status_c']) }} </td>
<td> {{ Format::date($appt[$i]['effective_date_c']) }} </td>
<td> {{ $agent[$i]['name'] }} </td>
</tr>
@endfor
我不确定你是如何匹配它们的,但我建议在Eloquent建立一个实际的关系。使用起来会容易得多。
答案 3 :(得分:0)
作为解决方案,首先,您可以使用array_merge()
函数合并两个数组:
<?php $result = array_merge($appts->toArray(), $agents->toArray()); ?>
注意:要从array
检索stdClass
,您应该使用toArray()
method。
重要提示:如果您在数组中使用相同的密钥,并且希望同时拥有这两个密钥,则应使用array_merge_recursive()
而不是array_merge()
。
然后,您可以使用@foreach
:
@foreach ($result as $data)
<tr>
<td>{{ $data->property }}</td>
</tr>
@endforeach
答案 4 :(得分:0)
这是一个古老的版本,绝对不是最新版本,但解决方案并不是那么棘手。 (请注意,我的解决方案假设您具有相同的列名。)
在控制器中:
$appts = [Query Here]
$agents = [Query Here]
$combo = [$appts, $agents]
然后,
@foreach($combo as $individualquery)
@foreach($individualquery as $whatever)
{{ $whatever->thing }}
@endforeach
@endforeach