In blade template i use last() method to find last iteration of foreach loop:
@foreach ($colors as $k => $v)
@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
if $colors
is a Collection
, $colors->last()
and end($colors)
both works
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
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
Don't know if that last method is working but if not, try this:
@foreach ($colors as $v)
<option value={!! $v->id !!} @if($v == end($colors)) 'selected' @endif > {!! $v->name !!} </option>
@endforeach