【问题标题】:laravel foreach loop in controller控制器中的laravel foreach循环
【发布时间】:2014-08-08 06:29:27
【问题描述】:

我在控制器(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() 提供的参数无效

有人可以帮我解决这个问题吗?

【问题讨论】:

  • whereOwnerAndStatus 以前从未见过这种语法。那样有用吗?文档在哪里?
  • 你是如何将$products 传递给你的视图的?

标签: php laravel foreach


【解决方案1】:

这会抛出一个错误:

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

因为您不能循环使用表中特定列 ($product->sku) 的模型。
所以,你必须循环整个模型:

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

在循环中,您可以检索您想要添加的任何列 ->[column_name]

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        sku 只是 Product 模型的属性吗?如果是这样:

        $products = Product::whereOwnerAndStatus($owner, 0)->take($count)->get();
        
        foreach ($products as $product ) {
          // Access $product->sku here...
        }
        

        还是sku 与另一个模型有关系?如果是这种情况,那么只要您的关系设置正确,您的代码就应该可以工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多