【问题标题】:symfony count usersymfony 统计用户
【发布时间】:2011-10-16 13:00:59
【问题描述】:

我使用 symfony 1.4.12 和教义。我有 sfGuardUser 表;我可以像这样计算所有记录:

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

我在表“created_at”中有字段;如果可以计算所有用户,那是当年在哪里创建的? 谢谢!

【问题讨论】:

    标签: symfony1 doctrine count doctrine-1.2 symfony-1.4


    【解决方案1】:
    $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];
    

    【讨论】:

    • 你可以通过修改 where 语句更简单地做到这一点:->where('YEAR(u.created_at) = ?', date('Y'))
    • 您也可以使用 Doctrine::HYDRATE_SINGLE_SCALAR 水合方法将值作为单个实体检索,从而可以跳过最后一行。
    【解决方案2】:

    有多种方法可以获取记录集合的计数。当您在查询对象或 Table 实例上调用 ->count() 函数时,Doctrine 会自动为您创建一个计数查询。

    例如,如果您想知道当年的用户总数和创建的用户数,您可以按如下方式进行:

    $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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 2022-12-13
      • 2023-03-07
      • 2016-06-11
      相关资源
      最近更新 更多