2017-02-02 4 views
1

モデルバインディングでid以外のテーブル列を使用したい場合は、モデルクラス(Service)のgetKeyNameを上書きしますが、動作しません。ルートキー名をカスタマイズできない

class Service extends Model{ 
    //override 
    public function getRouteKey() { 
     return 'key'; 
    } 
} 

サービステーブル:

id | key(string,unique) | name(string) 

私のルートファイル:

Route::resource('services', 'ServiceController'); 

ServiceControllerで:

public function show(Service $service) { 
    return $service; 
} 

が、私はmysiteurl.com/services/vpsに行くときには、404ページを示してい。
mysiteurl.com/services/1作品が、私はURLのidカラムを使用したくない)

Laravel docs

+1

:そうのようなgetRouteKeyName()メソッドをオーバーライドします。 –

+0

これで問題は解決しましたか? –

答えて

1

あなたはLaravelは、モデルのID以外の値を持つルートにあなたのモデルをバインドしたい場合は、必要にあなたが `getRouteKeyName`なく` getRouteKey`にあなたの方法の名前を変更する必要が

/** 
* Get the route key for the model. 
* 
* @return string 
*/ 
public function getRouteKeyName() 
{ 
    return 'slug'; 
} 
関連する問題