Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Menyoal Projek Berulang dengan Cekap dalam 7 Hari Seterusnya dengan Laravel's $q->where() Between Dates?

Bagaimana untuk Menyoal Projek Berulang dengan Cekap dalam 7 Hari Seterusnya dengan Laravel's $q->where() Between Dates?

Susan Sarandon
Susan Sarandonasal
2024-10-30 02:55:02268semak imbas

How to Efficiently Query Projects Recurring in the Next 7 Days with Laravel's $q->di mana() Antara Tarikh? 
di mana() Antara Tarikh? " />

Laravel $q->where() antara tarikh: Panduan Komprehensif

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn