2017-05-02 23 views
0

私は管理パネルのユーザとデータベースの他のものについての統計情報を表示したいと思います。Laravelは一定の時間間隔でデータベースにエントリを取得します

$users = User::where('admin', 0)->get(); 

    $usersRegisteredToday = array_filter($users->toArray(), function ($user) { 
     $registerDate = \DateTime::createFromFormat('Y-m-d H:i:s', $user['created_at']); 
     $registerDate->setTime(0,0,0); 
     $today = new \DateTime(); 
     $today->setTime(0,0,0); 

     $diff = $today->diff($registerDate); 
     $diffDays = (integer)$diff->format("%R%a"); // Extract days count in interval 
     return $diffDays == 0; 
    }); 

    return view('admin.index', compact("users", "usersRegisteredToday")); 

とビューで:たとえば は今、私は今日のためにユーザーと次のようにこれをやっているため、今月など 、今日登録されたどのように多くのユーザーが表示する

<p class="text-no">Today: {{ count($usersRegisteredToday) }} </p> 

これを行うためのより良い、よりシンプルで速い方法があるのだろうかと思う。なぜなら、私は他のものの情報を非常に遅くて重くすると思うからだ。だから私はこれを行うための最高の、そして最も軽い方法を知りたい。

答えて

1

我々が今日作成されたレコードを取得するために例えばwhereDate/whereMonth/whereDay/whereYear

を使用することができますLaravel 5.3のよう:ユーザー:: whereDate( 'のcreated_at'、DB ::生=

$ユーザーを( 'CURDATE()')) - > get();

おそらく同様の質問がここで尋ねている:Get only records created today in laravel

+0

おかげで、私はそれを考え出したと私は自分の質問への答えとして、それを入力しましたが、あなたは速かったです。 – TheAngelM97

+0

あなたが自分でそれを理解してくれてうれしいです。あなたのコーディングで幸運を祈る:) – Waqas

0
$todayStart = (new Carbon())->setTime(0, 0); 
$todayEnd = (new Carbon())->setTime(23, 59, 59); 
$users = User::where('admin', 0) 
      ->where('created_at', '>=', $todayStart) 
      ->where('created_at', '<=', $todayEnd)      
      ->get(); 

は、あなたはそれがさらに良くなるだろうクエリのスコープを使用することができます。 Userモデル内部:

class User extends Model 
{ 
    public function scopeCreatedBefore(Carbon $date) 
    { 
     return $this->where('created_at', '<=', $date); 
    } 

    public function scopeCreatedAfter(Carbon $date) 
    { 
     return $this->where('created_at', '>=', $date); 
    } 
} 

と使用法について:

$todayStart = (new Carbon())->setTime(0, 0); 
$todayEnd = (new Carbon())->setTime(23, 59, 59); 
$users = User::where('admin', 0) 
      ->createdAfter($todayStart) 
      ->createdBefore($todayEnd)      
      ->get(); 
関連する問題