استخدام مُساعدي التواريخ النسبية في مُنشئ الاستعلامات في Laravel
استخدام مُساعدات التواريخ النسبية في مُنشئ الاستعلامات في Laravel
بإصدار Laravel 11.42، أصبح لدينا الآن إمكانية الوصول إلى طرق مُنشئ استعلامات مفيدة للتعامل مع التواريخ النسبية. بينما لا تحتاج إلى إعادة هيكلة جميع تطبيقاتك لاستخدام هذه الطرق، إلا أنها تُضيف لمسة لطيفة وسهلة القراءة إلى منطق التواريخ النسبية في نماذجك. دعونا نلقي نظرة على مثال باستخدام نموذج `Article` :
تخيل أن لديك نطاقًا للحصول على المنشورات المُنشورة التي تتضمن حالة محددة، ويجب أن يكون تاريخ `published_at` مساويًا لـ `now()` أو قبل `now()` :
use Illuminate\Database\Eloquent\Builder;
use App\Models\Article;
public function scopeActive(): Article|Builder
{
return $this->where('status', ArticleStatus::Published)
->where('published_at', '<=', now());
}
يمكنك استخدام هذا النطاق في أي مكان آخر في الكود لتحديد المقالات على أنها نشطة فقط.
Article::with('user', 'category', 'tags')
->active()
->orderByDesc('published_at')
->limit(20)
->get();
الآن، مع Laravel 11.42، يمكننا إجراء تعديل طفيف على طريقة `scopeActive()` لاستخدام طريقة التاريخ النسبي. نريد أن تتطابق `whereNowOrPast` مع منطقنا الأصلي:
$this->where('status', ArticleStatus::Published)
- ->where('published_at', '<=', now());
+ ->whereNowOrPast('published_at');
إذا أردنا استخدام مُنشئ الاستعلامات للعثور على المقالات المُشار إليها على أنها `Published` ولكنها لا تزال في المستقبل، يمكننا استخدام طريقة `whereFuture()` :
$this->where('status', ArticleStatus::Published)
->whereFuture('published_at');
ماذا لو أردنا العثور على مقالات قبل أو بعد **تاريخ اليوم**؟ تحتوي مُساعدات التواريخ النسبية الجديدة على متغيرات مثل `or` و `not`:
$this->whereAfterToday('published_at')
->orWhereBeforeToday('published_at');
إذا كنت ترغب في معرفة المزيد حول جميع طرق التواريخ النسبية الجديدة المضافة إلى Laravel في الإصدار 11.42، تحقق من طلب السحب . توجد هذه الطرق في سمة جديدة تُسمى .