WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
ルートとモデルの結合

ルートとモデルの結合

このエントリーをはてなブックマークに追加

下記の項目はドキュメントの丸写しになりそうなので、省略します。公式ドキュメントをお読みください。

  • ルートグループ
  • サブドメインルーティング
  • ルートのプリフィックス

ルートとモデルの結合

モデル結合は、ルートからモデルのインスタンス*を受け取るための便利な手法です。たとえばユーザーIDを受け取る代わりに、そのIDに合致するUserモデルのインスタンスを受け取ることが出来ます。

まず、最初にRouteクラスのmodelメソッドで、ルートとパラメーターを結合します。

  • Route::model(パラメータ,モデル);
    Routeクラスのmodelメソッドは、第1引数にパラメータ、第2引数にモデルを指定します。これによりパラメーターがモデルに結合されます。

そして、{パラメータ}を含んだルートを定義します。

  • Route::get(URI/{パラメータ},function(モデル $パラメータ){
    //実行コード
    });
//userパラメータをUserモデルに結合
 Route::model('user','User');
 //{user}パラメータを含んだルートを定義
 Route::get('profile/{user}',function(User $user){
 //実行コード
 });

これによりパラメーターとモデルが結合済みですので、getメソッドの第1引数にパラメーターを含んだURIを指定すると、指定したモデルのインスタンスが渡されます。たとえば、profile/1がリクエストされると、IDが1のUserインスタンスが渡されます。

※もしデータベーステーブルにモデルのインスタンスが見つからない場合、404エラーがスローされますので注意してください。

自分自身でルートパラメーターを指定したい場合は、Route::bindメソッドを使用します。

Route::bind('user',function($value,$route){
 return User::where('name',$value)->first();
 });

 

« »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です