2016-12-22 5 views
0

I는 몇 가지 형태를 도시하는 경로를 가지고 보기 : 같은열망 적재 방법 형 주입

public function show(Form $form){ 
    return view('form', compact('form')); 
} 

나는 웅변 쿼리 빌더를 통해 Form 객체를 얻을 때, 나는 열망로드 관련 수있는 요소/모델 :

$form = App\Form::where('id', '1497')->with('subform')->get() 

방법이 subform 관련 객체에 자동으로 열망 - 자동로드 $form 객체가 아니면 내가 그런 수동으로 어떻게해야합니까 : 당신은 load() 방법을 사용하여 관계를 추가 할 수 있습니다

public function show($id){ 
    $form = App\Form::where('id', $id)->with('subform')->get(); 
    return view('form', compact('form')); 
} 

답변

0

을 :

public function show(Form $form) 
{ 
    return view('form', ['form' => $form->load('subform')]); 
} 
+0

네,하지만이 솔루션은 코드를 아름답게 보이지 않습니까? 그것은 여전히 ​​두 개의 별도 DB 쿼리를 만들 것인가, 아니면 내가 잘못한 것인가? – Gacek

+0

어쨌든 두 개의 쿼리를 만들지 않고도 관계 모델을로드 할 수 없습니다. 모델 바인딩을 사용하고 있으며 '코드를 아름답게 꾸미기'입니다. –

+0

글쎄, AFAIK, 열정적 인로드는 그렇게하기로되어있다. - 제한된 관계로로드 모델을 만든다. ($ this-> form :: where ('id', $ id) N + 1 문제를 회피하기위한 질의의 수 – Gacek

1

경로에서 해결 된 하위 폼을 자동으로 지연로드하려면 경로 모델 바인딩을 사용자 지정할 수 있습니다. App\Providers\RouteServiceProviderboot() 방법에서 사용자 지정 해상도를 정의 좋아 : 자동으로 하위 폼을로드하는 동안

public function boot() 
{ 
    parent::boot(); 

    Route::bind('form', function ($id) { 
     return App\Form::with('subform')->find($id);; 
    }); 
} 

이 주어진 양식에 경로 매개 변수 {form} 해결됩니다.