2015-04-23 67 views
4

使用laravel 4.2我想在URL中使用hashids而不是主键。它易于使用一条记录。如果我使用急切加载,我需要循环遍历所有模型,并用哈希ID替换主键。Laravel使用hashids替换主键获取所有获得

例如。 对于每一篇文章,我需要用hashid来改变post_id。 对于每篇文章的评论,我必须这样做。 对于评论的每个用户等等。 默认情况下,我可以扩展模型以返回hashid吗?

回答

1

路线是的,你可以用mutators扩展你的模型如何解决雄辩模型。将此方法放入模型中,或者更好地放入您的所有模型应该扩展的基础模型中。

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

后,你会得到你的模型hashid属性,像这样$post->hashid$comment->hashid

1

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

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

现在Laravel知道,如果你使用这样

/admin/{post}/edit 
+1

这将仅适用于单个记录工作。它不会与急切的加载工作。 – rohitnaidu19