PHP/Elixirエンジニアのブログ

有益なアウトプットを心がけます。

【Laravel】implicit bindingってなに?

とりあえず翻訳してみた

・implicit
→暗黙
・binding
→結合

....暗黙の結合!?

概要

ルートモデル結束の機能の一つ。
ver5.2から追加された機能で
ver5.1では明示的バインディングが必要だった
→app/Providers/RouteServiceProvider.php
 上記の「boot」メソッドに使用するEloquentモデルを
 定義する必要があった(例:$router->model('task', 'App\Task');)

これが必要なくなったことでリクエストでは
user_id等を送っていたのが受け取るときには
userモデルになっているというな現象が起こる。

何故idが自動的に取得されるかということは、
モデルクラスが実装している、UrlRoutableインターフェイスのgetRouteKeyメソッドの働きで
詳しくはactionヘルパーが内部で使っている、UrlGeneratorのtoRouteが影響している。