2011-07-30 3 views
2

私はdoctrineでsymfony 1.4.12を使用します。私はsfGuardUserテーブルを持っています。私はこのようなすべてのレコードを数えることができます:symfony countユーザ

$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)=?'、date( 'Y'))' – melekes

+0

非常に大きなありがとう! – denys281

+1

Doctrine :: HYDRATE_SINGLE_SCALAR水和メソッドを使用して値を単一のエンティティとして取得することもできます。その結果、最後の行をスキップできます。 – 4levels

1

レコードコレクションの数を取得する方法はさまざまです。 Doctrineは、クエリオブジェクトまたはテーブルインスタンスに対して - > 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(); 
関連する問題