️ سيتم إهمال هذه الحزمة لصالح هذه الحزمة: https://github.com/open-southeners/laravel-model-status
حالات كتابة كود Laravel لنماذج Eloquent.
يمكنك تثبيت الحزمة عبر الملحن:
composer require skore-labs/laravel-status
ستحتاج بعد ذلك إلى نشر تكوين الحزمة وعمليات الترحيل، حتى تتمكن من تعديل و/أو ترحيل جدول الحالات الجديد:
php artisan vendor:publish --provider="SkoreLabsLaravelStatusServiceProvider"
أضف حالات إلى النموذج الخاص بك عن طريق إضافة SkoreLabsLaravelStatusTraitsHasStatuses
والواجهة SkoreLabsLaravelStatusContractsStatusable
بحيث يمكنها تمرير بعض الأحداث المحددة مسبقًا (انظر أعلاه)، إليك مثال:
<?php
namespace App ;
use Illuminate Database Eloquent Model ;
use SkoreLabs LaravelStatus Contracts Statusable ;
use SkoreLabs LaravelStatus Traits HasStatuses ;
class Post extends Model implements Statusable
{
use HasStatuses;
// Your model logic here...
}
قم بتخصيص التعداد للتحقق من الحالة (باستخدام حزمة spatie/enum ، تحقق من وثائقها):
/**
* Get the statuses enum used for some utilities.
*
* @return string|SpatieEnumEnum
*/
public static function statusesClass ()
{
return App Statuses PostStatuses::class;
}
ملاحظة: هذا غير مطلوب، فقط إذا لم تكن جميع فئات تعداد حالة النموذج مخزنة في AppEnums
كـ ModelStatus
.
ملاحظة: جميع الطرق ليست حساسة لحالة الأحرف في أسماء الحالات.
تحقق مما إذا كان النموذج له حالة (حالات).
ملاحظة: تقوم بإرجاع اسم الحالة المتطابقة الحالية.
// Post has status Published
$ post -> hasStatus ( ' published ' );
// Post has status Published or Was Published
$ post -> hasStatus ([ ' published ' , ' was published ' ]);
قم بتعيين الحالة أو تغيير الحالة فقط إذا كانت الحالة السابقة مطابقة للمفتاح.
// Set post status to Was Published
$ post -> setStatus ( ' was published ' );
// Change if post has status Published to Was Published.
$ post -> setStatus ([ ' published ' => ' was published ' ]);
يمكنك أيضًا استخدام السمة لتعيين الحالة:
$ post -> status = ' was published ' ;
// Better use status method for this
if ( $ post -> hasStatus ( ' published ' )) {
$ post -> status = ' was published ' ;
}
// When save it check and attach the status
$ post -> save ();
يمكنك أيضًا أن تفعل الشيء نفسه باستخدام طريقة setStatusWhen
مثل المثال أعلاه باستخدام setStatus
.
// Change if post has status Published to Was Published.
$ post -> setStatusWhen ( ' published ' , ' was published ' );
إذا تم توفير معلمة، فإنها تعمل كاسم مستعار لـ hasStatus.
إذا تم توفير مصفوفة ترابطية، فإنها تعمل كاسم مستعار لـ setStatus.
وإلا، فسيتم استرداد العلاقة كـ $post->status
أو $post->status()->first()
كما يمكنك التصفية حسب النطاق:
Post:: status ( ' published ' );
Post:: where ( ' user_id ' , Auth:: id ())-> status ( ' published ' );
احصل على جميع حالات النموذج الممكنة.
Post:: statuses ();
// You can use Status model as well
Status:: getFrom (Post::class);
// Also specify value to return like '->value('id')'
Status:: getFrom (Post::class, ' id ' );
// Or return the object with columns like '->first(['id', 'name'])'
Status:: getFrom (Post::class, [ ' id ' , ' name ' ]);
احصل على الحالة الافتراضية للنموذج.
// Default status for post is Published, so it returns Published
Post:: getDefaultStatus ();
// You can use Status model query scope as well
Status:: query ()-> defaultFrom (Post::class)-> first ();
تتبع هذه الحزمة وجميع حزم Laravel الخاصة بنا قدر الإمكان دعم LTS الخاص بـ Laravel.
اقرأ المزيد: https://laravel.com/docs/master/releases#support-policy