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

Menggunakan Pembantu Tarikh Relatif di Pembina Pertanyaan Laravel '

Johnathan Smith
Johnathan Smithasal
2025-03-05 15:29:10349semak imbas

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());
}
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();
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');
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');
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');
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:
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