Foreach in laravel 4 控制器渲染在视图中


Foreach in laravel 4 Controller rendering in View

我正在为我的网络应用程序编写一个预订系统。
我通过print_r在控制器中获得所需的输出。
不幸的是,我无法在我的视图中获得正确的输出。

$userId = Sentry::getUser()->id;
$my_garden = DB::select('select * from gardens where userId = ?',array($userId));
foreach($my_garden as $garden)
{
   $gardenId = $garden->id;
   $address = $garden->address;
   $bookings_in_my_garden = Garden::find($gardenId)->booking;
   print_r($address.'<br>');
   foreach($bookings_in_my_garden as $bookings)
   {
       print_r($bookings->dateFrom." - ".$bookings->dateTo.'<br>');
    }
}

我得到的输出是
Predikerinnenstraat 10
2013-11-05 - 2013-11-12
普林森斯特拉特 2
2013-11-30 - 2013-12-07
2013-11-20 - 2013-11-27
并且是正确的
但是当我像这样将其传递给我的观点时:

return View::make('admin.booking.index')
->with('my_garden',$my_garden)
->with('bookings_in_my_garden',$bookings_in_my_garden);

并致电

@foreach($my_garden as $garden)
    <tr>
       <td>{{ $garden->id }}</td>
           @foreach($bookings_in_my_garden as $bookings)
                <td>{{ $bookings->dateFrom }}</td>
                <td></td>
                <td></td>
            @endforeach
        <td>{{ $garden->address }}</td>
        <td></td>
     </tr>
 @endforeach

我最终得到
2 2013-11-30 2013-11-20 Predikerinnenstraat 10
8 2013-11-30 2013-11-20 普林森斯特拉特2

有人可以帮助我吗?

您只将最后一次预订传递给您的视图。

您有一些选择,这里有两个:

1)在它们之间建立雄辩的关系,这样您就可以在自己的观点中:

@foreach($my_garden as $garden)
    <tr>
       <td>{{ $garden->id }}</td>
           @foreach($garden->bookings as $booking)
                <td>{{ $booking->dateFrom }}</td>
                <td></td>
                <td></td>
            @endforeach
        <td>{{ $garden->address }}</td>
        <td></td>
     </tr>
@endforeach

2) 将它们全部存储在控制器的数组中并传递到您的视图。