簡體   English   中英

laravel controller 中的 foreach 循環

[英]laravel foreach loop in controller

我對 controller (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
}

結果返回錯誤Undefined property: 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
$allData = Model::where('status', 1)->get();
                foreach ($allData as $data){
                    $data->status = 0;
                    $data->update();
                }

這里每個$data都是單個數據, $allData包含完整的集合。

在桌子上使用 foreach

為了我

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

您可以使用它來更新 laravel 中的多個數據,我已經對其進行了測試並且對我有用。 $allcat = Cart::where('user_id', Auth::user()->id)->get(); foreach ($allcat as $post) {$res[] = [ 'product_id' => $post->product_id, 'qty' => $post->Product->qty + $post->qty, ];$條碼= Product::where('id', $post->product_id)->update(['qty' =>$post->Product->qty + $post->qty,]); }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM