コントローラーでデータをループする問題があります(laravel 4)。私のコードは次のようなものです:
$owner = Input::get('owner');
$count = Input::get('count');
$product = Product::whereOwnerAndStatus($owner, 0)->take($count)->get();
次のようなコードでforproductを使用して$ product結果をループする場合:
foreach ($product->sku as $sku) {
// Code Here
}
結果はエラーを返しています未定義プロパティ:Illuminate\Database\Eloquent\Collection :: $ sk
だから、私はこのコードで少し即興しようとしています:
foreach ($product as $items) {
foreach ($items->sku as $sku) {
// Code Here
}
}
次のようなエラーを返すコード:foreach()に指定された無効な引数
これを解決するのを手伝ってくれる人はいますか?
こんにちは、これはエラーをスローします:
foreach ($product->sku as $sku){
// Code Here
}
特定の列でモデルをループできないため($ product-> sku)テーブルから。
したがって、モデル全体をループする必要があります。
foreach ($product as $p) {
// code
}
ループ内では、「-> [column_name]」を追加するだけで、必要な列を取得できます。
foreach ($product as $p) {
echo $p->sku;
}
すてきな一日を
Eloquent
モデルはNULLを返すため、実際には_$product
_にはデータがありません。おそらく間違っていると思われるwhereOwnerAndStatus
を使用し、_$product
_にデータがあった場合、get()
が複数のモデルのコレクションを返すため、最初の例では機能しませんが、そうではありません。 2番目の例は、foreach
がデータを取得しなかったためエラーをスローします。だから私はそれがこのようなものであるべきだと思う:
_$owner = Input::get('owner');
$count = Input::get('count');
$products = Product::whereOwner($owner, 0)->take($count)->get();
_
さらに、_$products
_にデータがあるかどうかも確認できます。
_if($product) {
return View:make('viewname')->with('products', $products);
}
_
次に、view
で:
_foreach ($products as $product) {
// If Product has sku (collection object, probably related models)
foreach ($product->sku as $sku) {
// Code Here
}
}
_
ビュー(ブレードテンプレート):ループ内で、探している列を取得できます。
@foreach ($products as $product)
{{$product->sku}}
@endforeach
sku
はProduct
モデルの単なるプロパティですか?その場合:
$products = Product::whereOwnerAndStatus($owner, 0)->take($count)->get();
foreach ($products as $product ) {
// Access $product->sku here...
}
または、sku
は別のモデルとの関係ですか?その場合、関係が適切にセットアップされている限り、コードは機能します。