Adham kukuh
Adham kukuh

Reputation: 15

duplicate value on select2 tag on laravel blade template

I found a bug when i try to displayed data on select2 tag. I got duplicate data and I want to know how to fixed it. Im using laravel 7 and here's my code

This is my controller code:

public function editLocation(Request $request,$id){
$mtFasilitas = DB::table('MT_Facility')->select('id','name')
                                        ->get();
$trFasilitas = DB::table('TR_Fasilitas')->select('idMtFasilitas')
                                         ->where('idDetailLokasi',$id)
                                         ->get();
return view('layout.back.content_kos.edit_kos',['mtFas' => $mtFasilitas, 'trFas' => $trFasilitas]);

}

This is my blade template :

<select class="js-example-basic-multiple form-control mb-4" name="fasilitas[]" multiple="multiple">
                @foreach ($mtFas as $key => $data)
                    @foreach ($trFas as $key2 => $data2)
                        <option value="{{$data->id}}"{{$data2->idMtFasilitas == $data->id ? 'selected="selected"' : ''}}> {{ $data->name}}</option> 
                    @endforeach
                @endforeach
 </select>

And this is the result : enter image description here

Anyone can help me ? Thank you

Upvotes: 1

Views: 675

Answers (3)

Rekha Kalasare
Rekha Kalasare

Reputation: 26

As per your data

$mtFasilitas = [{"id":4,"name":"a"},{"id":5,"name":"b"},{"id":6,"name":"c"}]

$trFasilitas = [{"idMtFasilitas":4},{"idMtFasilitas":5}]

Your inner loop running twice for each single value of outer loop, thats why data printed twice.

Upvotes: 0

Andy Song
Andy Song

Reputation: 4684

$trFasilitas = DB::table('TR_Fasilitas')->select('idMtFasilitas')
                                         ->where('idDetailLokasi',$id)
                                         ->get()
                                         ->pluck('idMtFasilitas')
                                         ->all();
        <select class="js-example-basic-multiple" name="fasilitas[]" multiple="multiple">
            @foreach ($mtFas as $data)
            <option value="{{ $data->id }}" {{in_array($data->id, $trFas) ? 'selected="selected"' : '' : ''}}>
                {{ $data->name }}</option>
            @endforeach
        </select>

I think this should do.

Upvotes: 1

Adham kukuh
Adham kukuh

Reputation: 15

This is the result of your updated answer sir @Andy Song enter image description here

Upvotes: 0

Related Questions