2015-04-23 55 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