我有关于在控制器中循环数据的问题(laravel 4)。我的代码是这样的:
$owner = Input::get('owner');
$count = Input::get('count');
$product = Product::whereOwnerAndStatus($owner, 0)->take($count)->get();
当我想使用foreach循环$ product结果时,代码如下:
foreach ($product->sku as $sku) {
// Code Here
}
结果返回错误未定义属性:Illuminate \ Database \ Eloquent \ Collection :: $ sku
所以,我尝试用这段代码即兴创作:
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;
}
祝你有美好的一天
实际上你的$product
没有数据,因为Eloquent
模型返回NULL。这可能是因为你使用了whereOwnerAndStatus
似乎是错误的,如果在$product
中有数据,那么它在你的第一个例子中就不会起作用,因为get()
会返回多个模型的集合,但事实并非如此。第二个例子引发错误,因为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
}
}
sku
只是Product
模型的属性吗?如果是这样:
$products = Product::whereOwnerAndStatus($owner, 0)->take($count)->get();
foreach ($products as $product ) {
// Access $product->sku here...
}
或者是sku
与另一个模特的关系?如果是这种情况,那么,只要您的关系设置正确,您的代码就可以正常工作。
视图(刀片模板):在循环内部,您可以检索要查找的任何列
@foreach ($products as $product)
{{$product->sku}}
@endforeach