Existe-t-il un moyen de trier @foreach
boucle dans laravel blade?
@foreach ($specialist as $key)
<option value="{{$key->specialist_id}}"> {{$key->description}}</option>
@endforeach
Je souhaite commander par $key->description
,
Je sais que je peux utiliser la commande par dans mon contrôleur,
->orderBy('description')
mais le contrôleur renvoie d'autres valeurs et ces valeurs doivent également être triées, je dois donc les classer par lame.
En supposant que votre variable $ specialist est une collection Eloquent, vous pouvez faire:
@foreach ($specialist->sortBy('description') as $oneSpecialist)
<option value="{{ $oneSpecialist->specialist_id }}"> {{ $oneSpecialist->description }}</option>
@endforeach
De plus, vous pouvez appeler votre modèle Eloquent directement depuis le modèle:
@foreach (Specialist::all()->sortBy('description') as $oneSpecialist)
<option value="{{ $oneSpecialist->specialist_id }}"> {{ $oneSpecialist->description }}</option>
@endforeach
Notez que vous utilisez un nom de variable trompeur de $ key dans votre boucle foreach (). Votre clé $ est en fait un élément du tableau, pas une clé. Je suppose que vous avez vu quelque part la syntaxe foreach ($ array as $ key => $ value), puis supprimé la valeur $?
Je suggère d'utiliser un laravel collection . Plus précisément, le sortBy()
. Vous pouvez utiliser l'un ou l'autre de ces éléments dans votre vue ou le contrôleur à partir duquel vous transmettez les données. Si les données sont transmises par un modèle, veillez à utiliser la fonction collect()
avant de continuer à utiliser les autres répertoriées.
J'espère que cela t'aides!