我在控制器(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()提供的参数无效
有人可以帮我解决这个问题吗?
答案 0 :(得分:32)
嗨,这会抛出一个错误:
foreach ($product->sku as $sku){
// Code Here
}
因为您无法从表中循环具有特定列( $ product-> sku )的模型。
所以你必须循环整个模型:
foreach ($product as $p) {
// code
}
在循环内部,您可以检索您想要添加的任何列“ - > [column_name]”
foreach ($product as $p) {
echo $p->sku;
}
祝你有美好的一天
答案 1 :(得分:1)
实际上您的$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
}
}
答案 2 :(得分:0)
sku
只是Product
模型的属性吗?如果是这样的话:
$products = Product::whereOwnerAndStatus($owner, 0)->take($count)->get();
foreach ($products as $product ) {
// Access $product->sku here...
}
或者是sku
与另一个模特的关系?如果是这种情况,那么,只要您的关系设置正确,您的代码就可以正常工作。
答案 3 :(得分:0)
视图(刀片模板):在循环内,您可以检索要查找的任何列
@foreach ($products as $product)
{{$product->sku}}
@endforeach