Php Laravel将所有get的主键替换为哈希ID

Php Laravel将所有get的主键替换为哈希ID,php,laravel,string-hashing,Php,Laravel,String Hashing,我使用的是Laravel4.2,我想在URL中使用HashID而不是主键。它很容易与单个记录一起使用。如果我使用即时加载,我需要遍历所有模型并用散列ID替换主键 比如说。 对于每一篇文章,我都需要用hashid更改post_id。 对于这篇文章的每一条评论,我也必须这样做。 对于评论的每个用户,等等。。 我可以扩展模型以默认返回hashid吗 您可以使用Route::bind方法来指定如何准确地从URL段解析模型,如下所示 Route::bind('post', function($value)

我使用的是Laravel4.2,我想在URL中使用HashID而不是主键。它很容易与单个记录一起使用。如果我使用即时加载,我需要遍历所有模型并用散列ID替换主键

比如说。 对于每一篇文章,我都需要用hashid更改post_id。 对于这篇文章的每一条评论,我也必须这样做。 对于评论的每个用户,等等。。
我可以扩展模型以默认返回hashid吗

您可以使用Route::bind方法来指定如何准确地从URL段解析模型,如下所示

Route::bind('post', function($value)
{
    return Post::where('hashid', $value)->first();
});
现在,如果你使用这样的路线,拉威尔知道如何解决雄辩的模型

/admin/{post}/edit

是的,您可以使用扩展模型。将此方法放在模型中,或者更好地放在所有模型都应该扩展的基础模型中

public function getHashidAttribute()
{
    return your_hash_function($this->attributes['id']);
}

之后,您将在模型上获得
hashid
属性,如so
$post->hashid
$comment->hashid
等。

这将仅适用于单个记录。它不适合急着加载。