2017-10-13 5 views
1

J'ai une méthode:pourquoi foreach imprimer une seule valeur dans Laravel?

public function winnerDetails() 
{  
    $winners = DB::table('winners')->get(); 
    //dd($winners); 
    foreach ($winners as $winner) { 
     $qrMainId = $winner->qrdetails_id; 
    } 
    dd($qrMainId); 
} 

dd($winners); retourne à la valeur de array mais quand j'utilise foreach ses rendements d'une valeur. Comment puis-je obtenir qui valeur de retour avec foreach boucle?

dd($winners) sortie:

enter image description here

et dd($qrMainId); retour une valeur 44. Mais il devrait retourner une autre valeur du tableau 35; Merci d'avance.

+3

Vous écrasez la valeur de '$ qrMainId' sur chaque boucle' foreach() '. Si vous voulez toutes les valeurs, vous devez enregistrer les valeurs dans un tableau ou concaténer la valeur de la chaîne. – Sean

Répondre

1

Pour obtenir ensemble de l'utilisation

foreach ($winners as $winner) { 
    $qrMainId[]= $winner->qrdetails_id; 

d'ID Pour une utilisation juste valeur

$qrMainId=''; 
    foreach ($winners as $winner) { 
    $qrMainId.= $winner->qrdetails_id; 
+0

Je veux simplement ne pas un tableau. Cela retournera le tableau. –

+0

Son retour indéfini '$ qrMainId' quand j'imprime comme' dd ($ qrMainId); ' –

+0

Nope son tableau retourne. Je veux juste la valeur comme ceci: https://prnt.sc/gx4exu –

0

Si vous voulez accomplir cette tâche d'une manière Laravel utiliser la méthode de plumer pour cartographier le tableau pour la clé que vous voulez

<?php 
public function winnerDetails() 
{  
    $winnersId = DB::table('winners')->get()->pluck('qrdetails_id'); 
    dd($winnersId); 
} 
+0

Je sais mais ça reviendra en tableau. Mais je veux la collection de valeurs. –

+0

Voulez-vous dire une collection Laravel? – OsDev

+0

oui je veux dire collection laravel https://prnt.sc/gx4exu –

0

Je pense que vous n'utilisez pas la puissance de Laravel ici. Évidemment, je ne sais pas ce que vous essayez de faire mais voici quelques indications.

Vous devriez probablement faire un model pour la table des gagnants maintenant les modèles dans les collections de retour de Laravel tout comme la façade de DB que vous utilisez maintenant. Maintenant, la classe Collection contient beaucoup d'aides utiles comme pluck

À ce stade, il devient aussi facile que Winner::all()->pluck('id') et vous avez vous-même un tableau de ID.

Et si vous voulez les obtenir ou séparées par des virgules quelque chose comme ça, vous pouvez utiliser le implode

Et vous obtiendrez Winner::all()->implode('id',',');

0

$ qrMainId est une variable non un tableau.

Il est modifié dans le foreach pendant chaque boucle.

Donc, votre code a toujours le dernier élément du tableau.

Utilisez un tableau pour recueillir des valeurs telles que

$qrMainId[] = $winner->qrdetails_id; 

ou sql sélectionner directement le champ que vous voulez.