Laravel-5 comment remplir sélectionner la zone à partir de la base de données avec l'id de la valeur et de la valeur de nom
Je veux créer une zone de sélection comme celle ci-dessous à l'aide de éclairer\html :
<select>
<option value="$item->id">$item->name</option>
<option value="$item->id">$item->name</option>
</select>
Dans mon contrôleur, j'ai essayé ceci:
public function create()
{
$items = Items::all(['id', 'name']);
return view('prices.create', compact('id', 'items'));
}
Et à mon avis ce:
<div class="form-group">
{!! Form::Label('item', 'Item:') !!}
{!! Form::select('item_id', $items, null, ['class' => 'form-control']) !!}
</div>
Le problème est qu'au lieu de $item->name
est l'affichage de toutes les infos de l'entité.
Vous devez vous connecter pour publier un commentaire.
Laravel fournit un Générateur de Requêtes avec des listes() la fonction
Dans votre cas, vous pouvez remplacer votre code
avec
Aussi, vous pouvez enchaîner avec un autre Générateur de Requêtes ainsi.
source: http://laravel.com/docs/5.0/queries#selects
Mise à jour pour Laravel 5.2
Merci beaucoup @jarry. Comme vous l'avez mentionné, la fonction de Laravel 5.2 doivent être
ou
ref: https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0 -- regardez Désapprobations listes
lists
est dépréciée en faveur depluck
. dans votre exemple, il seraitItems::all(['id', 'name'])->pluck('name', 'id');
Form
classe, par exemple@foreach($items as $items_each)<option value="{!! $items_each->id !!}">{!! $items_each->name !!}</option>@endforeach
Laravel >= 5.3 méthode de listes() est obsolète l'utilisation
pluck()
Cela vous donnera une boîte de sélection avec les mêmes sélectionnez les options comme les numéros d'id en DB
par exemple, si vous avez cela dans votre table DB:
dans la boîte de sélection, il sera comme ceci
J'ai découvert que d'arracher maintenant retourne une collection, et vous devez ajouter ->toArray() à la fin de l'arracher...donc comme ceci:
pluck('name', 'id')->toArray();
@foreach($elements as $element_each)<option value="{!! $element_each->id !!}">{!! $element_each->name !!}</option>@endforeach
donne une erreur.{!! !!}
avec{{ }}
Il suffit de changer votre contrôleur à l'suivantes:
Et votre vue:
Espère que cela permettra de résoudre votre problème
Contrôleur
compact('campaignStatus') sera dans [id=>état]; //exemple [1 => 'en attente']
Vue
Dans votre contrôleur, ajouter,
Et à votre avis, l'utilisation
Dans la boîte de sélection, il sera comme ceci,
Laravel utilisation de tableau pour
Form::select
. J'ai donc passé tableau comme ci-dessous:De votre point de vue:
Laravel 5.3 utilisation arracher($valeur, $key )
$valeur s'affiche dans la liste déroulante et $key est id
contrôleur
vue
Laravel 5.*
Dans votre contrôleur:
De votre point de vue:
J'ai ajouté
toArray()
aprèspluck
Désolé pour la réponse tardive
Évidemment
lists
méthode a étédeprecated
dans Laravel, mais vous pouvez utiliser l'arracher de la méthode.Pour Exemple:
Laravel 5.7
et de la vue si vous êtes
FORM
composants juste passer commesi va générer la liste déroulante
mais j'ai une situation à montrer que, dans certains pays comme la première option et la valeur null
j'ai donc visé à
et fixe, mais dans les derniers temps, si je veux changer ce que je déteste être de le changer dans la vue
Ont donc créé la fonction d'assistance basé sur
https://stackoverflow.com/a/51324218/8487424
et placés dans le Modèle du Payset contrôleur de
et enfin dans la vue
et le résultat est, comme prévu, mais je vous recommande fortement d'utiliser
pluck()
méthodePour Laravel 5 :
Pousser un article sur le début de la collection.
Beaucoup a été dit déjà, mais gardez à l'esprit qu'il y a des moments où tu ne veux pas de sortie de tous les enregistrements de la base de données dans votre sélectionnez champ de saisie ..... Exemple, j'ai travaillé sur cette école de gestion de site où j'ai pour la production de tous les panneau d'affichage des catégories dans une instruction select. De mon contrôleur c'est le code que j'ai écrit
Panneau d'affichage:: groupBy()->arracher('category')->get();
De cette façon, u obtenir distinctes enregistrer comme elles ont été regroupées donc pas de répétition des enregistrements
À remplir la liste déroulante sélectionner la zone dans laravel, nous devons suivre les étapes ci-dessous.
De contrôleur, nous avons pour obtenir la valeur comme ceci:
Et même on peut afficher dans la vue:
Cette valeur de clé dans la liste déroulante, vous pouvez utiliser selon vos besoins.
Espérons qu'il peut aider quelqu'un.
J'ai essayé de faire la même chose dans Laravel 5.8 et eu une erreur sur l'appel de l'arracher de manière statique. Pour ma solution que j'ai utilisé le suivant. La collection était clairement appelé todoStatuses.
Essayer celui-ci. Sans l'aide du contrôleur