[Laravel] メソッドインジェクションでBladeにあるモデルのインスタンスが渡せる件

2020年2月15日ITLaravel, PHP

とあるプロジェクトを参考にさせてもらっている時に気づいたのですが、

メソッドインジェクションにBladeのモデルインスタンス渡せるんですね!

例えば、、

ルーティング

Route::get('/hoges/{hoge}/edit', 'HogeController@edit');

コントローラー

public function edit(Hoge $hoge) {
    return view('edit', compact('hoge'));
}

今まで自分は、このように書いてました。

public function edit(Request $request) {
    $hoge = Hoge::where('id', $request->id);
    return view('edit', compact('hoge'));
}

すでにもってるモデルインスタンスをわざわざもう1回データベースに取りにいってました。。。

ですので、update もこう書けますよね。もうモデルは特定できてるので、、

public function update(Request $request, Hoge $hoge) {
    $hoge->fuga = $request->fuga;
    $hoge->save();
    return redirect('/');
}

たまたま見つけたのですが、気付けてよかったです。

以上になります。

スポンサーリンク

Posted by nobuhiro harada