Laravel & Carbon - 循环数据范围

Laravel & Carbon - Loop data range

我想用 Carbon 列出两个日期之间的所有日期。 这里的代码:

 @foreach ($rooms as $room)
  <div class="col-sm-4">
        <div class="card">
          <img class="card-img-top" data-src="holder.js/100px180">
          <div class="card-block">
            <h4 class="card-title">{{$room->type}}</h4>
            <p class="card-text">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum reiciendis facere repellat soluta obcaecati laborum ex perspiciatis, iusto.</p>
          </div>
          <ul class="list-group list-group-flush">
            <li class="list-group-item">
                <ul>
                    //////HERE THE PART TO LIST EACH DAY//////
                    @for($d = 0; $d < $checkin->diffInDays($checkout); $d++)
                     <li>{{$checkin->addDay()->toDateString()}}</li>
                    @endfor
                   //////////////////////////////////////////////

                </ul>
            </li>
          </ul>
          <div class="card-block">
             <button type="submit" class="btn btn-primary btn-lg btn-block" name="room_id" value="{{ $room->id }}">Book</button>
          </div>
        </div>
    </div>
    @endforeach

这是发生了什么(在这个测试中 $checkin = 2015-12-16 和 $checkout = 2015-12 -19):

很明显,每张卡片都应该有一个列表:

我知道我可以使用 php 类(比如 DatePeriod、DateInterval、ecc..),但我想用 Carbon 找到一个好的解决方案。

做一些测试,好像Carbon保存了日期的变化。

您可以像这样尝试 clone $checkin 对象:

<?php $date = clone $checkin; ?>

@while ($date->diffInDays($checkout))
    <li>{{$date->toDateString()}}</li>

    <?php $date->addDay(); ?>
@endwhile

或更好:

@for ($date=clone$checkin; $date->diffInDays($checkout)>0; $date->addDay())
    <li>{{$date->toDateString()}}</li>
@endfor