Dalam tulisan kali ini saya mencoba untuk membuat fungi pencarian berdasarkan rentang waktu setahun, sebulan, seminggu, dan sehari terakhir. Sebelumnya saya sudah memiliki data seperi ini :
Title Created At Artikel 3 2016-09-26 13:53:04 Artikel 15 2016-09-29 13:53:04 Artikel 4 2016-09-30 13:53:04 Artikel 6 2016-09-30 13:53:04 Artikel 2 2016-10-05 13:53:04 Artikel 16 2016-10-07 13:53:04 Artikel 10 2016-10-11 13:53:04 Artikel 21 2016-10-16 13:53:04 Artikel 19 2016-10-17 13:53:04 Artikel 23 2016-10-18 13:53:04 Artikel 1 2016-10-19 13:53:04 Artikel 13 2016-10-23 13:53:04 Artikel 18 2016-10-25 13:53:04 Artikel 17 2016-10-30 13:53:04 Artikel 5 2016-10-31 13:53:04 Artikel 11 2016-11-03 13:53:04 Artikel 14 2016-11-05 13:53:04 Artikel 25 2016-11-05 13:53:04 Artikel 12 2016-11-09 13:53:04 Artikel 20 2016-11-10 13:53:04 Artikel 22 2016-11-13 13:53:04 Artikel 24 2016-11-16 13:53:04 Artikel 7 2016-11-17 13:53:04 Artikel 9 2016-11-18 13:53:04 Artikel 8 2016-11-19 13:53:04
Data di atas memiili data tertua merupakan data yang dibuat pada tanggal 26 September 2016 sedangkan data terbaru dibuat tanggal 19 November 2016.
Persiapan di Controller
Pertama-tama buat dulu fungsi dateRange()
yang fungsinya menentukan rentang waktu :
<?php private function dateRange($time) { switch ($time) { case "day": $time = [Carbon::now()->subHours(24)->toDateTimeString(), Carbon::now()->toDateTimeString()]; break; case "week": $time = [Carbon::now()->subDays(7)->toDateTimeString(), Carbon::now()->toDateTimeString()]; break; case "month": $time = [Carbon::now()->subDays(30)->toDateTimeString(), Carbon::now()->toDateTimeString()]; break; case "year": $time = [Carbon::now()->subDays(365)->toDateTimeString(), Carbon::now()->toDateTimeString()]; break; default: $time = null; } return $time; }
Karena ini membutuhkan Carbon
, pastikan carbon
sudah didaftarkan di controller
yang dipakai.
Membuat Fungsi Pencarian.
<?php # $range = $this->dateRange("day"); // gunakan ini jika mencari yang rentang perhari $range = $this->dateRange("week");// gunakan ini jika mencari yang rentang perminggu # $range = $this->dateRange("month");// gunakan ini jika mencari yang rentang perbulan # $range = $this->dateRange("year");// gunakan ini jika mencari yang rentang pertahun $all = Article::whereBetween('created_at', $range)->orderBy('created_at','asc')->get();
Sehingga jika memilih rentang perminggu ( week ) data yang akan dihasilkan seperti berikut.
Title Created At Artikel 7 2016-11-17 13:53:04 Artikel 9 2016-11-18 13:53:04 Artikel 8 2016-11-19 13:53:04