Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

gerardw85's avatar

Can I create a more efficient blade directive?

Hi, I'm querying the database and returning a Job Type. The result is being returned in a drop down, along with other options. I want the other options in the drop down to be conditional based on the Job Type returned. Basically - I don't want to repeat all of the options AND show the Job Type result - because I'll have a duplicate value in the drop down.

The below process works, but it seems like a clunky solution. Wondering how a more experienced dev would accomplish this.

@if($listings->jobtypes->first()->name == 'Full-Time')
                            <option value="{{$listings->jobtypes->first()->name}}" selected>{{$listings->jobtypes->first()->name}}</option>
                            <option value="Part-Time">Part-Time</option>
                            <option value="Contractor">Contractor</option>
                            <option value="Temporary">Temporary</option>
                            <option value="Per Diem">Per Diem</option>
                        @endif

                        @if($listings->jobtypes->first()->name == 'Part-Time')
                            <option value="{{$listings->jobtypes->first()->name}}" selected>{{$listings->jobtypes->first()->name}}</option>
                            <option value="Part-Time">Full-Time</option>
                            <option value="Contractor">Contractor</option>
                            <option value="Temporary">Temporary</option>
                            <option value="Per Diem">Per Diem</option>
                        @endif

                        @if($listings->jobtypes->first()->name == 'Contractor')
                            <option value="{{$listings->jobtypes->first()->name}}" selected>{{$listings->jobtypes->first()->name}}</option>
                            <option value="Part-Time">Full-Time</option>
                            <option value="Contractor">Part-Time</option>
                            <option value="Temporary">Temporary</option>
                            <option value="Per Diem">Per Diem</option>
                        @endif

                        @if($listings->jobtypes->first()->name == 'Temporary')
                            <option value="{{$listings->jobtypes->first()->name}}" selected>{{$listings->jobtypes->first()->name}}</option>
                            <option value="Part-Time">Full-Time</option>
                            <option value="Contractor">Part-Time</option>
                            <option value="Temporary">Contractor</option>
                            <option value="Per Diem">Per Diem</option>
                        @endif

                        @if($listings->jobtypes->first()->name == 'Per-Diem')
                            <option value="{{$listings->jobtypes->first()->name}}" selected>{{$listings->jobtypes->first()->name}}</option>
                            <option value="Part-Time">Full-Time</option>
                            <option value="Contractor">Part-Time</option>
                            <option value="Temporary">Contractor</option>
                            <option value="Per Diem">Temporary</option>
                        @endif
0 likes
2 replies
antaugustol's avatar
Level 10

Hi @gerardw85 , this seems like a good use case for foreach

<select id=" " name=" ">
 <option value="{{-- code for selected option --}}"></option>
 @foreach ($listings->jobtypes as $jobtype)
   <option value="{{ $jobtype->name }}">{{ $jobtype->name }}</option>
 @endforeach
</select>
Lumethys's avatar

there is something very wrong with your code: you should NEVER do a query in a view (in this case blade file)

You do the query in the Controller, and then pass the result to the View, the View only USE the result it has been given

Please or to participate in this conversation.