我有一条只显示某种形式的路线:
Route::get('/form/{form}', 'FormController@show');
在FormController
中,感谢类型注入我自动将表单ID(从{form}
)转换为App\Form
对象并在视图中显示:
public function show(Form $form){
return view('form', compact('form'));
}
当我通过Eloquent查询构建器获得Form
对象时,我可以急切地加载相关的元素/模型:
$form = App\Form::where('id', '1497')->with('subform')->get()
是否可以通过$form
相关对象自动生成自动加载subform
对象,或者我需要手动执行此操作:
public function show($id){
$form = App\Form::where('id', $id)->with('subform')->get();
return view('form', compact('form'));
}
答案 0 :(得分:1)
要在路径中解析子窗体时自动延迟加载子窗体,您可以自定义路径模型绑定。使用boot()
App\Providers\RouteServiceProvider
方法定义自定义分辨率,如:
public function boot()
{
parent::boot();
Route::bind('form', function ($id) {
return App\Form::with('subform')->find($id);;
});
}
这会在自动加载子表单时将路由参数{form}
解析为给定表单。
答案 1 :(得分:0)
您可以使用load()
方法添加关系:
public function show(Form $form)
{
return view('form', ['form' => $form->load('subform')]);
}