Как l oop определенное количество раз, независимо от количества полученных записей (Laravel) - PullRequest
1 голос
/ 28 апреля 2020

У меня есть следующие запросы:

      @php
     $age_id = \App\Goalage::where('goal_id',$cat_fil->id)->pluck('age_id');
     $age_name = \App\Age::wherein('rangeid',$age_id)->groupby('rangeid')->get();
     @endphp

И следующее условие If и foreach:

                   @if(count($age_name) > 4 ) 
                           @foreach($age_name as $agename)
                        <button type="button" class="btn btn-outline-primary btn-sm-new mr-1"> 
                         {{$agename->agerange}} yrs
                        </button>
                          @endforeach
                     <a href="{{some.route}}">Click here for more than 4 results <a>
                  @else
                  //same code but will show 4 results or less

                   @endif

Как изменить приведенный ниже синтаксис только для циклического отображения / отображения первых 4 результаты в foreach, даже если их было больше?

@foreach($age_name as $agename)

Ответы [ 2 ]

2 голосов
/ 28 апреля 2020

Вы можете сделать что-то подобное, чтобы разбить l oop после 4 итераций
Добавить это в foreach l oop

  @if($loop->iteration > 4)

    @break

  @endif

В качестве альтернативы Вы можете сделать это в вашем случае для Laravel 5,2

@php
    $count = 0;
@endphp
@foreach($age_name as $agename)
    @if($count >= 4 )
        @break
    @endif
    <button type="button" class="btn btn-outline-primary btn-sm-new mr-1"> 
    {{$agename->agerange}} yrs
    </button>
    @php
     $count++;
    @endphp
@endforeach
0 голосов
/ 28 апреля 2020

Используйте take() или limit() для извлечения определенного количества записей из запроса:

$age_name = \App\Age::wherein('rangeid',$age_id)->groupby('rangeid')->take(4)->get();

Или

$age_name = \App\Age::wherein('rangeid',$age_id)->groupby('rangeid')->limit(4)->get();

Редактировать:

Используйте $loop->iteration для получения текущей итерации l oop и прерывания, когда она достигает определенной итерации, которая в вашем случае равна 4 .

@if(count($age_name) > 4 ) 
  @foreach($age_name as $agename)
      @if($loop->iteration > 4)
          @break;
      @endif
      <button type="button" class="btn btn-outline-primary btn-sm-new mr-1"> 
      {{$agename->agerange}} yrs
      </button>
  @endforeach
      <a href="{{some.route}}">Click here for more than 4 results <a>
@else
   //same code but will show 4 results or less
@endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...