2013-12-09 57 views
1

從數據庫檢索模型並將它們發送到客戶端時,我希望爲每個模型包含該資源的URL。作爲附加(雄辯)模型屬性的資源URL

讓我們爲例此Article模式,用:

  • ID
  • 標題
  • 內容

存儲鏈接直接在數據庫中沒有按文章沒有道理,因爲它可以很容易地由ID和標題組成:

例如:http://www.example.com/articles/article_id/article_title

所以,這就是我現在所做的:

我使用$appends陣列:

/** 
* Additional attributes 
* 
* @var array 
*/ 
protected $appends = array('article_url'); 

,並創造了一個getter方法article_url

/** 
* Get the article url attribute 
* 
* @return string 
*/ 
protected function getArticleUrlAttribute() 
{ 
    return $this->exists 
     ? url('articles', $parameters = array(
      $this->getKey(), 
      Str::title(Str::limit($this->title, 100)) 
     )) 
     : null; 
} 

這工作得很好。問題是,該模型可能不應該包含任何創建網址的邏輯。這個問題的好方法是什麼?在將文章發送給客戶之前,我應該在哪裏創建文章的URL地址?

回答

1

這種邏輯通常會用在你的框架的路由引擎中。例如,因爲聽起來像你正在使用Laravel,你可能會做一個Named Route - 稱之爲「canonical_article」。

然後,您可以使用link_to_route助手讓您的框架生成URL。

+0

是的,這是有道理的。謝謝! :) –