Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Laravel i zapytania z wieloma licznikami przy użyciu Eloquent

Za każdym razem, gdy wywołujesz metodę statyczną w klasie modelu, zwraca ona zapytanie Fluent, takie jak DB::table('yourmodeltable')->method . Jeśli będziesz o tym pamiętać, wkrótce zdasz sobie sprawę, że za pomocą modeli Eloquent można wykonać dowolne zapytanie.

Teraz, aby osiągnąć większą wydajność, możesz użyć SQLs DATA() funkcjonować. Mój przykład poniżej nie został przetestowany, więc możesz go poprawić.

// tomorrow -1 week returns tomorrow's 00:00:00 minus 7 days
// you may want to come up with your own date tho
$date = new DateTime('tomorrow -1 week');

// DATE(objecttime) turns it into a 'YYYY-MM-DD' string
// records are then grouped by that string
$days = Object::where('objecttime', '>', $date)
    ->group_by('date')
    ->order_by('date', 'DESC') // or ASC
    ->get(array(
        DB::raw('DATE(`objecttime`) AS `date`'),
        DB::raw('COUNT(*) as `count`')
    ));

foreach ($days as $day) {
    print($day->date . ' - '. $day->count);
}

Powinno to wydrukować coś takiego:

2013-03-09 - 13
2013-03-10 - 30
2013-03-11 - 93
2013-03-12 - 69
2013-03-13 - 131
2013-03-14 - 185
2013-03-15 - 69

Edytuj:

Sugerowane powyżej podejście zwraca instancje Eloquent Model, co może wydawać się dziwne, szczególnie jeśli var_dump($days) . Możesz także użyć funkcji list() Fluenta metoda na osiągnięcie tego samego.

$date = new DateTime('tomorrow -1 week');

// lists() does not accept raw queries,
// so you have to specify the SELECT clause
$days = Object::select(array(
        DB::raw('DATE(`objecttime`) as `date`'),
        DB::raw('COUNT(*) as `count`')
    ))
    ->where('created_at', '>', $date)
    ->group_by('date')
    ->order_by('date', 'DESC') // or ASC
    ->lists('count', 'date');

// Notice lists returns an associative array with its second and
// optional param as the key, and the first param as the value
foreach ($days as $date => $count) {
    print($date . ' - ' . $count);
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perl:Jak skopiować/odbić zdalne tabele MYSQL do innej bazy danych? Może też inna struktura?

  2. #1136 – Liczba kolumn nie odpowiada liczbie wartości?

  3. Zaktualizuj tabelę MySQL za pomocą pliku CSV

  4. Jak przechowywać GUID w tabelach MySQL?

  5. MySQL C++ Connector:niezdefiniowane odniesienie do `get_driver_instance'