0
以學說關係的優勢
讓我們考慮下面這個簡單的模式(在教義,但行走的用戶也歡迎):在前端應用程序中的Symfony
User:
columns:
name: string
Article:
columns:
user_id: integer
content: string
relations:
User:
local: user_id
foreign: id
現在,如果你創建Article模型的路線,併產生一個通過doctrine:generate-module-for-route frontend @article_route
的模塊,你會得到一個管理所有文章的CRUD應用程序。但在前端,您通常需要管理與登錄用戶相關的對象,因此您必須手動獲取用戶的ID,將ID傳遞給模型,並編寫一組檢索與此用戶相關的對象的方法例如:
public function executeIndex(sfWebRequest $request)
{
$this->articles = Doctrine::getTable('Articles')
->getUserArticles(this->getUser());
}
public function executeShow(sfWebRequest $request)
{
$this->article = $this->getRoute()->getObject();
if (!$this->article->belongsToUser($this->getUser()))
{
$this->redirect404();
}
}
和型號:
class ArticleTable extends Doctrine_Table
{
public function getUserArticles(sfUser $user)
{
$q = $this->createQuery('a')
->where('a.user_id = ?', $user->getId());
return $q->execute();
}
}
class Article extends BaseArticle
{
public function belongsToUser(sfUser $user)
{
return $this->getUserId() == $user->getId();
}
}
這是微不足道的東西,但你必須手動寫每一個新的關係,這種代碼。我是否錯過某種利用教義關係的方式?無論如何,你會怎麼做?謝謝。
sfContext :: getInstance() - > getUser()返回null,可能是因爲用戶在路由之後得到了實例化。我應該改變工廠裝貨的順序嗎?如何? – Dziamid 2010-10-10 17:59:42
嗯,所以它 - 我不知道爲什麼我以前的測試成功。看起來你不能使用這種技術':-(' – lonesomeday 2010-10-11 21:31:05