J'ai une table nommée "items" et une entrée pour la condition where nommée "ref_code".
$items = DB::table('items')
->where('ref_code','=', $request->ref_code)
->get(['id', 'ref_code', 'name','price']);
Mais je n'arrive pas à prendre les valeurs de chaque colonne.
J'ai vérifié si le constructeur de requêtes fonctionnait ou non en utilisant:
return $items;
Heureusement, il n'y a pas de problème.
Mais retourner ou obtenir une valeur unique ne fonctionne pas avec:
return $items->id
Est-ce que ma syntaxe est fausse? Tout cela se trouve dans mon contrôleur.
EDIT: j'ai essayé
dd($items);
avant de revenir et cela m'a montré ceci:
Collection {#325 ▼
#items: array:1 [▼
0 => {#322 ▶}
]
}
Merci d'avoir mis à jour votre question avec le résultat. Regardez votre résultat de débogage. ça ressemble à
array:1 [▼
0 => {#322 ▶}
]
Cela signifie que votre requête renvoie une collection de tableaux à cause de votre méthode get()
. Ainsi, la méthode get()
renvoie toujours une collection d'un tableau.
Pour éviter ce problème, vous devez utiliser la méthode first()
au lieu de get()
. Rappelez-vous : à tout moment, vous devez utiliser la méthode first () lorsque vous souhaitez obtenir une seule ligne.
Votre requête devrait donc ressembler à:
$items = DB::table('items')
->select('id', 'ref_code', 'name', 'price')
->where('ref_code','=', $request->ref_code)
->first();
Ou
$item = YourModelName::select('id', 'ref_code', 'name', 'price')
->where('ref_code','=', $request->ref_code)
->first();
Et enfin, obtenir la sortie comme $ Item-> id, $ item-> code_réf, etc.
J'espère que ça va aider.
Références: https://laravel.com/docs/5.4/queries#retrieving-results
get()
retournerait une collection
$items = DB::table('items')
->where('ref_code','=', $request->ref_code)
->get(['id', 'ref_code', 'name','price']);
Dans le cas ci-dessus, $items
serait une collection, vous devez donc parcourir la collection pour accéder aux propriétés.
foreach ($items as $item) {
$item->price;
}
Si vous devez renvoyer une instance de modèle, vous pouvez utiliser la méthode first()
à la place.
$items = DB::table('items')
->select('id', 'ref_code', 'name', 'price')
->where('ref_code','=', $request->ref_code)
->first();
et accéder aux propriétés
$items->price;
Essayez ceci en utilisant le modèle
$result = Model_name::->where('ref_code','=', $request->ref_code)
->first(['id', 'ref_code', 'name', 'price']);