Saya mencoba membuat halaman laporan yang menampilkan laporan dari tanggal tertentu hingga tanggal tertentu. Ini kode saya saat ini:
$now = date('Y-m-d');
$reservations = Reservation::where('reservation_from', $now)->get();
Apa yang dilakukannya di SQL biasa adalah select * from table where reservation_from = $now
.
Saya memiliki kueri ini di sini, tetapi saya tidak tahu cara mengubahnya menjadi kueri yang fasih.
SELECT * FROM table WHERE reservation_from BETWEEN '$from' AND '$to
Bagaimana cara mengubah kode di atas menjadi kueri yang fasih? Terima kasih sebelumnya.
reservation_from
. Anda dapat menggunakan nilai Karbon berdasarkan itu.Reservation::where('reservation_from', '>=', Carbon::createFromDate(1975, 5, 21);) ->where('reservation_from', '<=', Carbon::createFromDate(2015, 5, 21);)->get()
,;Jawaban:
The
whereBetween
Metode memverifikasi bahwa nilai kolom adalah antara dua nilai.Dalam beberapa kasus, Anda perlu menambahkan rentang tanggal secara dinamis. Berdasarkan komentar @Anovative , Anda dapat melakukan ini:
Jika Anda ingin menambahkan lebih banyak kondisi maka Anda dapat menggunakan
orWhereBetween
. Jika Anda ingin mengecualikan interval tanggal maka Anda dapat menggunakanwhereNotBetween
.Klausul yang berguna di mana lain:
whereIn
,whereNotIn
,whereNull
,whereNotNull
,whereDate
,whereMonth
,whereDay
,whereYear
,whereTime
,whereColumn
,whereExists
,whereRaw
.Laravel mendokumentasikan tentang Where Clauses.
sumber
$from
dan$to
akan menjadi tanggal dinamis yang dimiliki model? Seperti dalam adaeffective_at
danexpires_at
ladang dan saya ingin query untuk melihat apakah item saat ini berada dalam kisaran tersebut. Saya mencobaeach()
dengan jika itu menggunakanCarbon::now()->between( ... )
, namun tetap mengembalikan semua hasil.filter()
, itu berhasil.MyModel::all()->where('column', 'value')->filter(function ($item) { if (Carbon::now->between($item->effective_at, $item->expires_at)) { return $item; } })->first();
Opsi lain jika bidang Anda adalah
datetime
alih-alihdate
( meskipun berfungsi untuk kedua kasus ):sumber
Berikut ini seharusnya bekerja:
sumber
Jika Anda ingin memeriksa apakah tanggal sekarang ada di antara dua tanggal di db: => di sini query akan mendapatkan daftar aplikasi jika aplikasi karyawan dari dan ke tanggal ada di tanggal hari ini.
sumber
Coba ini:
Karena Anda mengambil berdasarkan satu nilai kolom, Anda juga dapat menyederhanakan kueri Anda:
Ambil berdasarkan kondisi: laravel docs
Semoga ini bisa membantu.
sumber
Dan saya telah membuat ruang lingkup model
Lebih lanjut tentang cakupan:
https://laravel.com/docs/5.8/eloquent#query-scopes
https://medium.com/@janaksan_/using-scope-with-laravel-7c80dd6a2c3d
Kode:
Dan di pengontrol, tambahkan Perpustakaan Karbon ke atas
ATAU
Untuk mendapatkan rekor 10 hari terakhir dari sekarang
Untuk mendapatkan rekor 30 hari terakhir dari sekarang
sumber
Jika perlu di saat harus ada bidang datetime seperti ini.
sumber
Saya tahu ini mungkin pertanyaan lama tetapi saya baru saja menemukan diri saya dalam situasi di mana saya harus menerapkan fitur ini di aplikasi Laravel 5.7. Di bawah ini adalah apa yang berhasil dari saya.
Anda juga perlu menggunakan Karbon
sumber