[SQL] Laravel 웅변 get 및 결과 일별로 그룹화
SQLLaravel 웅변 get 및 결과 일별로 그룹화
저는 현재 사용자의 IP / ID와 페이지 자체의 ID를 기록, 방문자가 페이지에 액세스 할 때마다 하나 개의 행을 기록 PAGE_VIEWS의 테이블을 가지고있다. 그것은 시간 / 분 / 초를 포함하므로, 타임 스탬프 : 나는 created_at 열 유형의 것을 추가해야합니다. 내가 GROUPBY 쿼리를하려고하면, 그것은 때문에 초 차이없는 그룹 같은 일을 함께한다.
created_at page_id user_id
========== ======= =======
10-11-2013 3 1
10-12 2013 5 5
10-13 2013 5 2
10-13 2013 3 4
... ... ...
내가 뭔가를 얻을 수 있도록, 뷰 / 일을 기준으로 결과를 얻을 싶습니다
date views
==== =====
10-11-2013 15
10-12 2013 45
... ...
덕분에 내가 :) (원시 이것을 달성하기 위해 쿼리 내가 DB 파고해야합니다 생각하고 있지만 어떤 통찰력이 크게 도움이 될 것이다
편집 : created_at 형식의 추가 설명.
해결법
-
==============================
1.나는 키가 단지 날짜로 날짜 시간 변환 MySQL의에서 DATE () 함수이며, 나는이에 대한 해결책을 발견 생각 :
나는 키가 단지 날짜로 날짜 시간 변환 MySQL의에서 DATE () 함수이며, 나는이에 대한 해결책을 발견 생각 :
DB::table('page_views') ->select(DB::raw('DATE(created_at) as date'), DB::raw('count(*) as views')) ->groupBy('date') ->get();
이 원시 query.The의 다음 나는 웅변 틱 구문 해낸 것입니다 때문에, 이것은 Laravel 웅변 솔루션은 정말 없습니다. 절에서 사용하는 탄소 날짜를 비교할 경우 첫 번째.
$visitorTraffic = PageView::where('created_at', '>=', \Carbon\Carbon::now->subMonth()) ->groupBy('date') ->orderBy('date', 'DESC') ->get(array( DB::raw('Date(created_at) as date'), DB::raw('COUNT(*) as "views"') ));
-
==============================
2.당신은 탄소를 사용할 수 있습니다 (Laravel에 통합)
당신은 탄소를 사용할 수 있습니다 (Laravel에 통합)
// Carbon use Carbon\Carbon; $visitorTraffic = PageView::select('id', 'title', 'created_at') ->get() ->groupBy(function($date) { return Carbon::parse($date->created_at)->format('Y'); // grouping by years //return Carbon::parse($date->created_at)->format('m'); // grouping by months });
-
==============================
3.여기에 내가 그것을 할 방법이다. 짧은 예,하지만 훨씬 더 관리 내 쿼리를 만든
여기에 내가 그것을 할 방법이다. 짧은 예,하지만 훨씬 더 관리 내 쿼리를 만든
$visitorTraffic = PageView::where('created_at', '>=', \Carbon\Carbon::now->subMonth()) ->groupBy(DB::raw('Date(created_at)')) ->orderBy('created_at', 'DESC')->get();
-
==============================
4.당신은 MySQL을 사용 포맷 된 날짜를 기준으로 결과를 필터링 할 수 있습니다 및 laravel-5.4에서이 같이 사용 무언가 (MySQL은 / Mariadb 도움 여기를 참조하십시오) :
당신은 MySQL을 사용 포맷 된 날짜를 기준으로 결과를 필터링 할 수 있습니다 및 laravel-5.4에서이 같이 사용 무언가 (MySQL은 / Mariadb 도움 여기를 참조하십시오) :
Model::selectRaw("COUNT(*) views, DATE_FORMAT(created_at, '%Y %m %e') date") ->groupBy('date') ->get();
-
==============================
5.나는 현재 Laravel 5.3을 사용하고, 같은 문제가 없었다.
나는 현재 Laravel 5.3을 사용하고, 같은 문제가 없었다.
내가) (DATE_FORMAT를 사용
->groupBy(DB::raw("DATE_FORMAT(created_at, '%Y-%m-%d')"))
희망이 당신을 도울 것입니다.
-
==============================
6.
PageView::select('id','title', DB::raw('DATE(created_at) as date')) ->get() ->groupBy('date');
-
==============================
7.대부분의 데이터베이스 문제와 마찬가지로, 그들은 데이터베이스를 사용하여 해결해야한다.
대부분의 데이터베이스 문제와 마찬가지로, 그들은 데이터베이스를 사용하여 해결해야한다.
당신은에 의해 그룹에 원하는 데이터를 저장하고이 문제를 해결하기 위해 효율적이고 명확한 방법을 달성 할 수있는 인덱스를 사용하여.
$table->tinyInteger('activity_year')->unsigned()->index(); $table->smallInteger('activity_day_of_year')->unsigned()->index();
<?php namespace App\Models; use DB; use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; class PageView extends Model { public function scopePerDay($query){ $query->groupBy('activity_year'); $query->groupBy('activity_day_of_year'); return $query; } public function setUpdatedAt($value) { $date = Carbon::now(); $this->activity_year = (int)$date->format('y'); $this->activity_day_of_year = $date->dayOfYear; return parent::setUpdatedAt($value); }
$viewsPerDay = PageView::perDay()->get();
-
==============================
8.그룹 데이터 대신 DATETIME의 날짜에 따라, 당신은 CAST 기능을 사용할 수 있습니다.
그룹 데이터 대신 DATETIME의 날짜에 따라, 당신은 CAST 기능을 사용할 수 있습니다.
$visitorTraffic = PageView::select('id', 'title', 'created_at') ->get() ->groupBy(DB::raw('CAST(created_at AS DATE)'));
-
==============================
9.경고 : 테스트되지 않은 코드입니다.
경고 : 테스트되지 않은 코드입니다.
$dailyData = DB::table('page_views') ->select('created_at', DB::raw('count(*) as views')) ->groupBy('created_at') ->get();
-
==============================
10.나는이 오래된 질문이고, 복수 응답가 알고있다. 어떻게 이제까지 문서 및 laravel에 내 경험 아래 좋은 일들을 처리 "웅변 방법이"에 따라
나는이 오래된 질문이고, 복수 응답가 알고있다. 어떻게 이제까지 문서 및 laravel에 내 경험 아래 좋은 일들을 처리 "웅변 방법이"에 따라
모델,이 같은 뮤 테이터 / 게터를 추가
public function getCreatedAtTimeAttribute() { return $this->created_at->toDateString(); }
또 다른 방법은 열을 캐스팅하는 것입니다 모델에서 $ 캐스트 배열을 채 웁니다
$casts = [ 'created_at' => 'string' ]
여기 캐치는 웅변은 항상 문자열로 열을 던져 때문에 다시이 모델에 탄소를 사용할 수 없다는 점입니다
희망이 도움이 :)
-
==============================
11.탄소없이 Laravel 4.2을 사용하여
탄소없이 Laravel 4.2을 사용하여
저는 여기에 최근 십일 잡고 당일 created_at 타임 스탬프와 각 행을 계산하는 방법은 다음과 같습니다.
$q = Spins::orderBy('created_at', 'desc') ->groupBy(DB::raw("DATE_FORMAT(created_at, '%Y-%m-%d')")) ->take(10) ->get(array( DB::raw('Date(created_at) as date'), DB::raw('COUNT(*) as "views"') )); foreach ($q as $day) { echo $day->date. " Views: " . $day->views.'<br>'; }
도움이 되었기를 바랍니다
-
==============================
12.MySQL의에서 당신은 MONTH 매개 변수로 타임 스탬프를 가진 키워드에 추가 할 수 있습니다 laravel에서이 같은 그것을 할 수 있습니다
MySQL의에서 당신은 MONTH 매개 변수로 타임 스탬프를 가진 키워드에 추가 할 수 있습니다 laravel에서이 같은 그것을 할 수 있습니다
Payement::groupBy(DB::raw('MONTH(created_at)'))->get();
-
==============================
13.내가 통계를 만들기위한 laravel 패키지를 구축 : https://github.com/Ifnot/statistics
내가 통계를 만들기위한 laravel 패키지를 구축 : https://github.com/Ifnot/statistics
정말 쉽게 사용할 수 있도록이 웅변, 탄소와 지표를 기반으로합니다. 이 날짜 그룹화 지표의 추출에 유용 할 수있다.
$statistics = Statistics::of(MyModel::query()); $statistics->date('validated_at'); $statistics->interval(Interval::$DAILY, Carbon::createFromFormat('Y-m-d', '2016-01-01'), Carbon::now()) $statistics->indicator('total', function($row) { return $row->counter; }); $data = $statistics->make(); echo $data['2016-01-01']->total;
```
-
==============================
14.당신은 또한 다음과 같은 방법으로이 문제를 해결할 수 :
당신은 또한 다음과 같은 방법으로이 문제를 해결할 수 :
$totalView = View::select(DB::raw('Date(read_at) as date'), DB::raw('count(*) as Views')) ->groupBy(DB::raw('Date(read_at)')) ->orderBy(DB::raw('Date(read_at)')) ->get();
from https://stackoverflow.com/questions/20603075/laravel-eloquent-get-results-grouped-by-days by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 다 대다 관계 (제품의 변화)의 조합에 대한 SQL 스키마를 설계 (0) | 2020.07.20 |
---|---|
[SQL] 어떻게에만 PostgreSQL을 간단한 퍼지 검색을 만드는 방법? (0) | 2020.07.20 |
[SQL] 쿼리 기본 쿼리라는 쿼리 및 입력 쿼리의 차이 [마감] (0) | 2020.07.20 |
[SQL] 때 당신은 관계형 데이터베이스를 사용하지 않겠습니까? [닫은] (0) | 2020.07.20 |
[SQL] 는 SQL Server 테이블에 대한 변경 사항을 확인? (0) | 2020.07.20 |