2011-07-30 2 views
2

나는 symfony 1.4.12를 doctrine과 함께 사용합니다. 나는 sfGuardUser 테이블을 가지고있다. 다음과 같은 모든 기록을 계산할 수 있습니다.심포니 사용자 수

$count_user=Doctrine::getTable('sfGuardUser')->count(); 

나는 "created_at"테이블에 필드가 있습니다. 모든 사용자 수를 계산할 수 있다면 현재 연도에 생성 된 사용자 수를 계산할 수 있습니까? 감사합니다.

답변

3
$first_day_of_current_year = date('Y-m-d H:i:s', strtotime('1 january')); 

$q = Doctrine_Query::create() 
    ->select('COUNT(u.*)') 
    ->from('sfGuardUser u') 
    ->where('u.created_at > ?', $first_day_of_current_year); 
$total = $q->execute(array(), Doctrine_Core::HYDRATE_NONE); 
$total = $total[0][0]; 
+1

을 수정하여 : 예를 들어 당신이 사용자의 총량과 현재 연도에서 만든 사용자의 양을 알고 싶다면 다음과 같이

, 당신은 그것에 대해 갈 수 어디 진술 :'-> 어디 ('YEAR (u.created_at) =?', 날짜 ('Y'))' – melekes

+0

매우 큰 감사합니다! – denys281

+1

Doctrine :: HYDRATE_SINGLE_SCALAR 수화 메소드를 사용하여 하나의 엔티티로 값을 검색 할 수도 있습니다. 결과적으로 마지막 행을 건너 뛸 수 있습니다. – 4levels

1

레코드 컬렉션 수를 구하는 방법은 다양합니다. Doctrine은 쿼리 개체 나 Table 인스턴스에서 -> count() 함수를 호출 할 때 자동으로 카운트 쿼리를 생성합니다.

$query = Doctrine_Query::create() 
    ->from('sfGuardUser'); 
// alternative query retrieval 
// $query = sfGuardUserTable::getInstance()->createQuery(); 
// all users 
$totalUsers = $query->count(); 
// users created this year 
$query->where('YEAR(created_at) = ?', date('Y')); 
$totalUsersThisYear = $query->count(); 
당신이이 더 간단 할 수