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!