Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Laravel &beberapa kueri penghitungan menggunakan Eloquent

Setiap kali Anda memanggil metode statis pada kelas model Anda, ia mengembalikan kueri Lancar seperti DB::table('yourmodeltable')->method . Jika Anda mengingatnya, Anda akan segera menyadari bahwa mungkin untuk melakukan kueri apa pun dengan model Eloquent.

Sekarang, untuk mencapai kinerja yang lebih baik, Anda dapat menggunakan SQL TANGGAL() fungsi. Contoh saya di bawah ini belum teruji, jadi silakan perbaiki.

// 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);
}

Ini akan mencetak sesuatu seperti:

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

Sunting:

Pendekatan yang disarankan di atas mengembalikan contoh Eloquent Model, yang mungkin tampak aneh, khususnya jika Anda var_dump($days) . Anda juga dapat menggunakan list() Flu Lancar metode untuk mencapai hal yang sama.

$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. Situs ini tidak dapat dijangkau setelah memindahkan situs wordpress

  2. Bagaimana cara mengimpor file CSV besar dengan 200,00 baris ke MySQL (asinkron dan cepat)?

  3. Pernyataan yang disiapkan PDO/MYSQL tidak keluar dari karakter?

  4. Permintaan MySQL dengan JOIN tidak menggunakan INDEX

  5. Pencocokan seluruh kata dengan karakter titik di MySQL