4

我使用 laravel 4.2,我想在 url 中使用 hashids 而不是主键。它易于与单个记录一起使用。如果我使用急切加载,我需要遍历所有模型并用哈希 id 替换主键。

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

4

2 回答 2

1

您可以使用 Route::bind 方法来指定应该如何从 URL 段中解析模型,如下所示。

Route::bind('post', function($value)
{
    return Post::where('hashid', $value)->first();
});

现在 Laravel 知道如果你使用这样的路由来解析 Eloquent 模型

/admin/{post}/edit
于 2015-04-23T10:59:22.093 回答
1

是的,您可以使用mutators扩展您的模型。将此方法放入您的模型中,甚至更好地放入您的所有模型都应扩展的基础模型中。

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

之后,您将获得hashid模型的属性,例如 so$post->hashid$comment->hashid

于 2015-04-23T12:30:56.207 回答