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

2019年4月2日ITLaravel, PHP

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

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

例えば、、

Blade のアクション

HOGE

ルーティング

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('/');
}

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

ひとこと

こんなに省略できると、ほんとRailsみたいですね。

スポンサーリンク

Posted by nobuhiro harada