j'ai un problème avec les données en boucle dans le contrôleur (laravel 4). mon code est comme ça:
$owner = Input::get('owner');
$count = Input::get('count');
$product = Product::whereOwnerAndStatus($owner, 0)->take($count)->get();
quand je veux utiliser foreach pour boucler pour un résultat de produit $ avec un code comme celui-ci:
foreach ($product->sku as $sku) {
// Code Here
}
le résultat renvoie une erreur Propriété non définie: Illuminate\Database\Eloquent\Collection :: $ sku
alors, j'essaie d'improviser un peu avec ce code:
foreach ($product as $items) {
foreach ($items->sku as $sku) {
// Code Here
}
}
le code renvoyant une erreur comme ceci: Argument non valide fourni pour foreach ()
y a-t-il quelqu'un qui pourrait m'aider à résoudre ce problème?
Salut, cela jettera une erreur:
foreach ($product->sku as $sku){
// Code Here
}
Parce que vous ne pouvez pas boucler un modèle avec une colonne spécifique ($ produit-> sku) de la table.
Vous devez donc boucler sur le modèle entier:
foreach ($product as $p) {
// code
}
Dans la boucle, vous pouvez récupérer la colonne de votre choix en ajoutant simplement "-> [nom_colonne]".
foreach ($product as $p) {
echo $p->sku;
}
Passez une bonne journée
sku
est-il simplement une propriété du modèle Product
? Si c'est le cas:
$products = Product::whereOwnerAndStatus($owner, 0)->take($count)->get();
foreach ($products as $product ) {
// Access $product->sku here...
}
Ou sku
est-il une relation avec un autre modèle? Si tel est le cas, votre code devrait fonctionner tant que votre relation est configurée correctement.
En réalité, votre $product
ne contient aucune donnée car le modèle Eloquent
renvoie NULL. C'est probablement parce que vous avez utilisé whereOwnerAndStatus
qui semble erroné et s'il y avait des données dans $product
, cela ne fonctionnerait pas dans votre premier exemple car get()
renvoie une collection de plusieurs modèles, mais ce n'est pas le cas. Le deuxième exemple génère une erreur car foreach
n'a pas reçu de données. Donc, je pense que ça devrait être quelque chose comme ça:
$owner = Input::get('owner');
$count = Input::get('count');
$products = Product::whereOwner($owner, 0)->take($count)->get();
De plus, vous pouvez également vous assurer que si $products
a des données:
if($product) {
return View:make('viewname')->with('products', $products);
}
Puis dans la view
:
foreach ($products as $product) {
// If Product has sku (collection object, probably related models)
foreach ($product->sku as $sku) {
// Code Here
}
}