Find last iteration of foreach loop in laravel blade
In blade template i use last() method to find last iteration of foreach loop:
@foreach ($colors as $k => $v)
<option value={!! $v->id !!} {{ $colors->last()->id==$v->id ? 'selected':'' }} > {!! $v->name !!} </option>
@endforeach
Is it ok? Perhaps there is a Laravel-style way to do the same?
Solution 1:
As for Laravel 5.3+, you can use the $loop variable
$loop->last
@foreach ($colors as $k => $v)
@if($loop->last)
// at last loop, code here
@endif
@endforeach
Solution 2:
What you do is absolutely fine if you want to obtain instance of the last item in the collection.
Additionally, in Laravel 5.3 you can use $loop
variable, which allows you to get boolean for last iteration $loop->last
or to obtain current iteration index $loop->iteration
, total number of records $loop->count
and a few more The Loop Variable
@foreach ($posts as $post)
{{ $post->title }} ({{ $loop->iteration }} of {{ $loop->count }})
@endforeach
Solution 3:
@foreach ($colors as $v)
<option value={!! $v->id !!} {!!($v == end($colors)) ? 'selected="selected"' : '' !!} > {!! $v->name !!} </option>
@endforeach
or
@foreach ($colors as $v)
<option value={!! $v->id !!} {{($v == end($colors)) ? 'selected="selected"' : '' }} > {!! $v->name !!} </option>
@endforeach