Rumah > pembangunan bahagian belakang > tutorial php > Menggunakan Pembantu Tarikh Relatif di Pembina Pertanyaan Laravel '

Menggunakan Pembantu Tarikh Relatif di Pembina Pertanyaan Laravel '

Johnathan Smith
Lepaskan: 2025-03-05 15:29:10
asal
347 orang telah melayarinya

Using Relative Date Helpers in Laravel's Query Builder

Laravel versi 11.42 memperkenalkan satu set kaedah pembina pertanyaan tarikh praktikal, memudahkan logik pertanyaan yang berkaitan dengan tarikh. Walaupun tidak perlu refactor semua aplikasi untuk menggunakan kaedah ini, mereka memberikan kelebihan yang lebih ringkas dan mudah dibaca kepada logik tarikh relatif dalam model. Mari kita lihat dengan contoh model

. Article

Katakan anda mempunyai skop untuk mendapatkan artikel yang diterbitkan dengan status tertentu, dan tarikh

mestilah sama dengan atau lebih awal daripada masa semasa: published_at

use Illuminate\Database\Eloquent\Builder;
use App\Models\Article;

public function scopeActive(): Article|Builder
{
    return $this->where('status', ArticleStatus::Published)
                ->where('published_at', '<=', now());
}
Salin selepas log masuk
Anda boleh menggunakan skop ini di tempat lain dalam kod anda untuk menghadkan artikel ke artikel aktif sahaja.

Article::with('user', 'category', 'tags')
    ->active()
    ->orderByDesc('published_at')
    ->limit(20)
    ->get();
Salin selepas log masuk
Sekarang, dengan Laravel 11.42, kita boleh membuat sedikit pelarasan kepada kaedah

untuk menggunakan kaedah tarikh relatif. Kaedah scopeActive() boleh memadankan logik asal kami: whereNowOrPast

$this->where('status', ArticleStatus::Published)
     ->whereNowOrPast('published_at');
Salin selepas log masuk
Jika anda ingin menggunakan pembina pertanyaan untuk mencari artikel yang ditandakan

tetapi masih di masa depan, anda boleh menggunakan Published kaedah: whereFuture()

$this->where('status', ArticleStatus::Published)
     ->whereFuture('published_at');
Salin selepas log masuk
Bagaimana jika anda ingin mencari artikel yang lebih awal atau lebih awal daripada tarikh hari ini? Fungsi penolong tarikh relatif baru termasuk

dan or variasi: not

$this->whereAfterToday('published_at')
     ->orWhereBeforeToday('published_at');
Salin selepas log masuk
Untuk semua kaedah tarikh relatif baru yang ditambahkan dalam Laravel v11.42, lihat permintaan tarik #54408. Kaedah ini terletak dalam ciri baru yang dipanggil

. BuildsWhereDateClauses

Atas ialah kandungan terperinci Menggunakan Pembantu Tarikh Relatif di Pembina Pertanyaan Laravel '. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan