Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Laravel &nhiều truy vấn đếm bằng Eloquent

Bất cứ khi nào bạn gọi một phương thức tĩnh trên lớp mô hình của mình, nó sẽ trả về một truy vấn Thông thạo như DB::table('yourmodeltable')->method . Nếu bạn ghi nhớ điều đó, bạn sẽ sớm nhận ra rằng có thể thực hiện bất kỳ truy vấn nào với các mô hình Eloquent.

Bây giờ, để đạt được hiệu suất cao hơn, bạn có thể sử dụng SQLs DATE () hàm số. Ví dụ dưới đây của tôi chưa được kiểm tra, vì vậy vui lòng sửa lại.

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

Điều này sẽ in ra một cái gì đó như:

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

Chỉnh sửa:

Phương pháp được đề xuất ở trên trả về các bản sao của Eloquent Model, có vẻ lạ, đặc biệt nếu bạn var_dump($days) . Bạn cũng có thể sử dụng list() của Fluent phương pháp để đạt được điều tương tự.

$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. MySql ngẫu nhiên hóa 10 hàng cuối cùng

  2. DROP tất cả các khóa ngoại trong cơ sở dữ liệu MYSQL

  3. Thêm trình điều khiển jdbc trên Netbeans / Glassfish trong Windows ở đâu?

  4. Sử dụng lớp cơ sở dữ liệu Django bên ngoài Django?

  5. Gọi một thủ tục được lưu trữ từ câu lệnh DECLARE khi sử dụng con trỏ trong MySQL