2012-06-22 2 views
0

간단한 뉴스 웹 응용 프로그램에서 작업합니다.특정 저자가 작성한 기사를 심포니에 등록하는 방법은 무엇입니까?

테이블 기사 (id, title, content, user_id)와 테이블 사용자 (id, name, username, passwd ..)가 있습니다.

백엔드 앱에서는 특정 user_id의 기사 만 나열하고 싶습니다.

user_id 나는 $this->getUser()->getAttribute('user_id')에서 얻을 것이다.

심포니 웹 사이트에서 제공되는 문서는 내가 볼 수있는 한이 문제를 다루지 않습니다.

답변

0

This article 다른 접근 방식을 제공합니다. 사용자의 요구에 대해서는

, 당신은 buildQuery을 재정의 할 수

protected function buildQuery() 
{ 
    return parent::buildQuery() 
    ->where('user_id = ?', $this->getUser()->getAttribute('user_id')); 
} 
0

을 할 수 있습니다 :

  • 당신은 같은 아래에 새 행 삽입 generator.yml에 :

    list: 
        title: Articles list 
        table_method: getArticlesByUserId 
    
  • 을 ArticleTable.class.php에서 새 함수를 삽입하십시오 :

    public function getArticlesByUserId() { 
        $userId = sfContext::getInstance()->getUser()->getAttribute('user_id'); 
        $u = $this->createquery('u')->where('u.user_id = ?', $userId); 
    
        return $q; 
    } 
    
+0

그것은 모델 [sfContext ::의 getInstance()을 (http://webmozarts.com/2009/07/01/why-sfcontextgetinstance-is-bad/)를 사용하는 것은 좋은 생각이 아니다 . – j0k

+0

ArticlesTable.class와 관련된 두 번째 대답은 필자의 특별한 요구에 더 잘 드러났다. ID 대신 작가의 실명과 카테고리 이름을 표시하고 싶습니다. 언급 된 필드를 채우기 위해 Article.class에 메소드를 추가하는 대신 innerJoin-s를 사용했기 때문에 훨씬 적은 쿼리를 생성합니다. 감사. – user1460780

+0

예를 들어, ArticleTable.class.php에서 UserObject id를 검색하는 가장 좋은 방법은 귀하의 의견입니다. – ilSavo

관련 문제