自定义路径键名称不起作用

时间:2017-02-02 15:55:33

标签: laravel

我希望模型绑定在检索给定模型时使用id以外的表列,并在模型类中覆盖getKeyName(在本例中为Service)但它是不工作!

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有效,但我不想在网址中使用id列

Laravel docs

1 个答案:

答案 0 :(得分:3)

如果您希望Laravel将模型绑定到值不是模型ID的路径,则需要覆盖getRouteKeyName()方法,如下所示:

/**
 * Get the route key for the model.
 *
 * @return string
 */
public function getRouteKeyName()
{
    return 'slug';
}