2016-08-29 2 views
0

다음은 원시 SQL 쿼리입니다.Laravel 5. DB :: 선택 작동 원리

하지만 dd($best_price)을한다면 나는 다음과 같은 결과를 얻을 :

array:2 [▼ 
    0 => {#158 ▼ 
    +"id": 46 
    +"product_id": 69 
    +"shop_name": "Metro C&C" 
    +"product_name": "Cream" 
    +"brand": ""Tastyland"" 
    +"weight_volume": 0.22 
    +"min(price)": 300.0 
    } 
    1 => {#160 ▼ 
    +"id": 47 
    +"product_id": 69 
    +"shop_name": "Klopshop" 
    +"product_name": "Cream" 
    +"brand": ""Tastyland"" 
    +"weight_volume": 0.22 
    +"min(price)": 300.0 
    } 
] 

을 내가

foreach($best_price as $best_price_id) { 
      return $best_price_id->shop_name; 
     }; 

을한다면 나는 다음과 같은 결과 "Metro C&C"을 받았다. 나는 다음과 같은 질문이

: DBeaver는 하나를 제공한다 (300)의 최소 가격으로 두 가지 결과가 있다는 것을

  1. 어떻게 Laravel 이해 않습니다를, (실제로이 결과는 내가 예상하는 것입니다)? 2 행의 결과를 얻기 위해 SQL 쿼리를 어떻게 변경해야합니까?

  2. foreach은 첫 번째 행만 반환합니까?

+3

"foreach가 첫 번째 행만 반환하는 이유는 무엇입니까?" 'return'은 루프를 종료하기 때문에! –

+1

반환 할 때 루프가 종료됩니다. –

답변

1

처음에는 Laravel의 쿼리 작성 메서드를 사용하여 쿼리를 작성하는 경우가 거의 없습니다. 행 sql이 아닙니다. 당신은 그들로부터 얻을 수 있습니다 this official document.

하나가 아닌 모든 값을 반환하십시오. 당신이 return를 사용할 때

$the_best_price = []; //initializing an empty array. 

foreach($best_price as $best_price_id) { 
     $the_best_price[] = $best_price_id->shop_name; 
    }; 
return $the_best_price; //this will return all as an array, 

그것은 실행을 종료하고, 귀하의 질문에, 그것은 단지 하나의 value.First가 배열 한 후 foreach 루프 외부로 반환 할 가지고있다 무엇도 돌아갑니다.