Bonjour à tous,

Je coince sur un affichage de checkbox cochés sur base d'info contenue en BDD.

Je dispose de 3 tables:

House
ID NAME
1 maison1
2 Maison2
3 Maison3

Agency:
ID NAME
1 agence1
2 agence2
3 agence3

HouseLinked
ID agency_id house_id
1 1 1
2 1 2
3 1 3
4 2 3
5 3 1

Une agence peut gérer plusieurs maisons et les différentes agences peuvent gérer les mêmes maisons.

mon controler:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
public function edit(Agency $link) //$link = id de l'agence
    {
 
    	$houses = House::all(); //affiche toute les maisons
    	$houseLinked = HouseLinked::where('agency_id',$link->id)->get();
	//dd($houseLinked);
        return view('/admin/agencies/link.edit',compact('link','houses','houseLinked'));
    }
et ma vue:

j'affiche toutes les maisons disponibles dans ma boucle foreach.
Par contre là où cela ne va pas c'est pour afficher les cases à cocher. en tenant compte que si l'ID de la maison est présent dans la table HouseLinked pour l'agence concernée, alors il coche celle-ci.

Comment faire dans ce cas ?

Merci pour votre aide.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
<form method="POST" action="/admin/agencies/link/{{$link->id}}">
			@csrf
			@method('PATCH')
 
 
 
			@foreach($houses as $house)
			<div class="form-group row">
					<div class="form-check">
 
                                      @foreach($houseLinked as $hl)
 
					   <input class="form-check-input" type="checkbox" name="house_id[]" value="{{$house->id}}" checked="{{$house->id == $hl->house_id ? 'checked':' '}}" >
					@endforeach  
 
                                       <label class="form-check-label" for="defaultCheck1">
					  {{$house->name}}
					  </label>
					</div>
 
			</div>
 
 
			@endforeach