控制器中的laravel foreach循环

ztigrdn8  于 2022-12-27  发布在  其他
关注(0)|答案(7)|浏览(163)

我有一个关于循环数据在控制器(laravel 4)的问题.我的代码是这样的:

$owner = Input::get('owner');
$count = Input::get('count');
$product = Product::whereOwnerAndStatus($owner, 0)->take($count)->get();

当我想使用foreach循环$product result时,代码如下:

foreach ($product->sku as $sku) {
    // Code Here
}

结果返回错误未定义的属性:照明\数据库\口才\收藏::$sku
所以,我试着用这段代码做一些即兴发挥:

foreach ($product as $items) {
    foreach ($items->sku as $sku) {
        // Code Here        
    }
}

代码返回如下错误:为foreach()提供的参数无效
有人能帮我解决这个问题吗?

4nkexdtk

4nkexdtk1#

这将抛出一个错误:

foreach ($product->sku as $sku){ 
// Code Here
}

因为您无法循环表中具有特定列($product->sku)的模型。
因此,必须在整个模型上循环:

foreach ($product as $p) {
// code
}

在循环中,只需加上->[column_name],就可以检索所需的任何列

foreach ($product as $p) {
echo $p->sku;
}
zdwk9cvp

zdwk9cvp2#

实际上,您的$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        
    }
}
5tmbdcev

5tmbdcev3#

视图(刀片模板):在循环中,您可以检索要查找的任何列

@foreach ($products as $product)
   {{$product->sku}}
 @endforeach
busg9geu

busg9geu4#

sku是否只是Product模型的一个属性?如果是:

$products = Product::whereOwnerAndStatus($owner, 0)->take($count)->get();

foreach ($products as $product ) {
  // Access $product->sku here...
}

或者sku是与另一个模型的关系?如果是这样的话,那么,只要正确设置了关系,代码就可以工作。

8iwquhpp

8iwquhpp5#

$allData = Model::where('status', 1)->get();
                foreach ($allData as $data){
                    $data->status = 0;
                    $data->update();
                }

这里每个**$data都是单个数据,$allData**包含完整的集合。

f2uvfpb9

f2uvfpb96#

*对表使用foreach

对我来说

@foreach($products as $data)
            <tr>
                <td>{{$data->id}}</td>
                <td>{{$data->name}}</td>
                <td>{{$data->price}}</td>
            </tr>
 @endforeach
pgx2nnw8

pgx2nnw87#

你可以用它来更新laravel中的多个数据,我已经测试过了,它对我很有效。$allcat = Cart::where('user_id',Auth::user()-〉id)-〉get(); foreach($所有目录为$post){$res[] = [ '产品标识' =〉$post-〉产品标识,'数量' =〉$post-〉产品-〉数量+ $post-〉数量,];$barcode =产品::其中('id',$post-〉产品标识)-〉更新(['qty' =〉$post-〉产品-〉数量+ $post-〉数量,]);}

相关问题