di mana() Antara Tarikh? " />
Pernyataan Masalah
Pertanyaan $q-> ;dimana('recur_at', '>', date("Y-m-d H:i:s", time() - 604800)) tidak memenuhi kriteria yang diingini, iaitu untuk mendapatkan projek dengan nilai recur_at lebih besar daripada tarikh semasa tolak 7 hari.
Penyelesaian 1
Untuk mencari dengan tepat projek yang akan berulang dalam tempoh 7 hari akan datang, gunakan pertanyaan berikut:
<code class="php">$projects = Project::where(function($q) { $q->where(DB::raw('recur_at BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW()')); $q->where('status', '<', 5); $q->where('recur_cancelled', '=', 0); });</code>
Penyelesaian 2 (Dioptimumkan dengan Karbon)
Tingkatkan pertanyaan menggunakan pakej Karbon untuk manipulasi tarikh:
<code class="php">$projects = Project::where('recur_at', '<=', Carbon::now()->addWeek()) ->where('recur_at', '!=', "0000-00-00 00:00:00") ->where('status', '<', 5) ->where('recur_cancelled', '=', 0);</code>
Penyelesaian Dioptimumkan
Seperti yang dicadangkan oleh Joel Friedman, pertanyaan berikut adalah lebih ringkas dan cekap:
<code class="php">$projects = Project::whereBetween('recur_at', array(Carbon::now(), Carbon::now()->addWeek())) ->where('status', '<', 5) ->where('recur_cancelled', '=', 0);</code>
Penyelesaian ini menggunakan kaedah whereBetween untuk menentukan julat bagi medan recur_at, dengan berkesan mendapatkan semula projek dengan nilai recur_at dalam masa 7 hari akan datang.
Atas ialah kandungan terperinci Bagaimana untuk Menyoal Projek Berulang dengan Cekap dalam 7 Hari Seterusnya dengan Laravel's $q->where() Between Dates?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!