如何在cakephp 3.x中显示日期范围内每个用户的总登录次数

sxpgvts3  于 2022-11-11  发布在  PHP
关注(0)|答案(1)|浏览(114)

我有一个登录表,ID为user_id(fk),日期为date。我如何显示users和每个用户在日期范围内的登录次数(作为另一列)?
这是我的索引函数。

public function index()
    {

        $this->paginate = [
            'contain' => 'Users',

        ];
        $query = $this->Logins->find('all')
              ->distinct('Logins.user_id')
                ->where([
                    'Logins.date >=' => '2021-07-25 00:00:00',
                    'Logins.date <=' => '2021-07-27 00:00:00',

              ]);
        $this->set('logins', $this->paginate($query));
    }

我如何通过获取日期范围的输入来实现相同的功能?以及如何显示每个用户在该日期范围内的登录次数?

m528fe3b

m528fe3b1#

你应该在users表中添加一列login_count。每次成功登录后,将其加一。或者,用一个日志表记录各种事件,其中可以是登录事件。这样你就不必猜测了。
然后使用查找两个日期之间的计数(假设Cake PHP 3.x或更高版本)。假设使用事件方法,您将查看给定日期期间的登录事件和用户id:

$query = $events->find()->where(function (QueryExpression $exp, Query $query) {
        return $query->newExpr()->and([
          'startDate' => $startDate,
          'endDate' => $endDate,
          'user_id' => $userId
        ]);
    });

相关问题