2014-06-18 8 views
6

컨트롤러 (laravel 4)의 루핑 데이터에 문제가 있습니다. 내 코드는 다음과 같다 :컨트롤러의 루프 foreach 루프

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

나는 다음과 같은 코드로 $ 제품 결과를 루프에 foreach 문을 사용하려면 :

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

결과가 반환 오류 정의되지 않은 속성 : \ 데이터베이스를 조명 \ 웅변 \ 컬렉션 : $ SKU

그래서, 나는이 코드를 조금 즉흥적으로하려고 :

이런

코드를 반환 오류 : foreach는 대한 공급 잘못된 인수()

날이 문제를 해결하는 데 도움이 수있는 사람이있다?

+0

'whereOwnerAndStatus'는 이전에 그 구문을 전혀 보지 못했습니다. 그게 효과가 있니? 문서에서 그것은 어디에 있습니까? –

+0

'$ products'를 어떻게 보셨습니까? –

답변

20

안녕하세요, 오류가 발생합니다 :

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

때문에 당신이 할 수없는 루프 테이블에서 특정 컬럼 ($ 제품 -> SKU)를 가진 모델.
그래서 반드시 전체 모델에 루프 :

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

방금 ​​추가 원하는 열을 검색 할 수있는 루프 내부 "-> [COLUMN_NAME]"

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

유무를 좋은 날

0

skuProduct 모델의 재산일까요? 그렇다면 :

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

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

또는이다 sku 다른 모델과의 관계? 그렇다면 관계가 제대로 설정되어있는 한 코드가 제대로 작동해야합니다.

0

실제로 $product에는 Eloquent 모델이 NULL을 반환하기 때문에 데이터가 없습니다. whereOwnerAndStatus을 잘못 사용했기 때문에 $product에 데이터가있는 경우 get()이 여러 모델 모음을 반환하기 때문에 첫 번째 예제에서는 작동하지 않지만 그럴 경우는 아닙니다. 두 번째 예제에서는 foreach이 데이터를 가져 오지 않았기 때문에 오류가 발생합니다. view에 그런

if($product) { 
    return View:make('viewname')->with('products', $products); 
} 

: $products 데이터가있는 경우

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

는 또한 당신이 또한 확인 할 수 있습니다 : 그래서 내가 이런 식으로 뭔가해야한다고 생각

foreach ($products as $product) { 
    // If Product has sku (collection object, probably related models) 
    foreach ($product->sku as $sku) { 
     // Code Here   
    } 
}