2016-07-29 3 views
0

관계 : 코드 위 영수증이 hasMany LineItemsLaravel 5.1 복잡 관계 쿼리 빌더

$columns = ['rece_id','rece_user_id','rece_name','rece_date'] 

$builder = Receipt::select($columns) 
     ->with('lineItems') 
     ->where('rece_user_id', Auth::user()->id) 

dd($builder->get()->toArray()); 

는 모두 각각의 관련 광고 항목을 (모든 열)로 나에게 영수증을 제공합니다.

첫 번째 광고 항목의 한 열만 필요합니다. liit_description. (내가 다른 열로 $columns 목록에 필요).

Eloquent에서도 이와 같은 작업이 가능합니까? 이 웅변 쿼리로 변환 할 수있는 경우

 $builder = DB::table('receipts')->select($columns) 
     ->join('line_items', function ($join) { 
      $join->on('receipts.rece_id', '=', 'line_items.liit_rece_id'); 
     }) 
     ->where('rece_user_id', Auth::user()->id) 
     ; 

를 (누군가가 도울 수 있다면 그러나 나는 웅변 솔루션을 선호)

UPDATE

내가 대신 웅변의 DB 쿼리를 사용하여 그것을 해결 재미있을거야.

+0

왜 사용하지 않는 (아무것도에 대한 설득력 문서에 참여하지 않음) 일, 웅변과 조인을 사용하여 해결 - > get() 대신 first() – ClearBoth

+0

@ClearBoth 모든 영수증이 필요하지만 ** 처음 ** lineitem 만 필요합니다. – karmendra

답변

0
$builder = Receipt::with(['lineItems' => function ($query) { 
     $query->first('liit_description'); 
    }])->where('rece_user_id', '=', Auth::user()->id)->get($columns); 
+0

제게 전체 첫 번째 항목을 제공합니다. 이 쿼리에서 line_item에서 하나의 열만 선택해야합니다. – karmendra

+0

어떤 열이 필요합니까? 업데이트 된 답변을 참조하십시오. – ClearBoth

+0

'value()'함수가 널 배열 – karmendra

0

나는 놀랍게도 $ 열 배열의

추가 liit_description, 그리고

$builder = Receipt::select($columns) 
    ->join('line_items', function ($join) { 
     $join->on('receipts.rece_id', '=', 'line_items.liit_rece_id'); 
    }) 
    ->where('rece_user_id', Auth::user()->id) 
;