حزمة laravel-attributes
هي أداة مصممة لمساعدة مطوري Laravel على إدارة السمات المخصصة وتنفيذها بسهولة في مشاريعهم. فهو يمكّنك من تحديد السمات مباشرة في نماذج Eloquent، مما يجعل من الأسهل التعامل مع الخصائص الديناميكية أو المحسوبة دون تعديل مخطط قاعدة البيانات مباشرة. باستخدام هذه الحزمة، يمكنك إنشاء وتكوين مجموعات السمات للنماذج، مما يسهل تنظيم وتوسيع معالجة البيانات في تطبيقات Laravel. إنها مفيدة بشكل خاص للمشاريع التي تتطلب نماذج بيانات مرنة وقابلة للتخصيص.
ليس لديك أي ضغط على السمات! يمكنك إنشاء سمات لأي نموذج وعرضها مثل شرب الماء :)
PHP: ^8.0
Laravel Framework: ^9.0
صفات | L9 | L10 |
---|---|---|
1.0 | ✅ | ✅ |
composer require milwad/laravel-attributes
بعد نشر ملفات التكوين.
php artisan vendor:publish --provider= " MilwadLaravelAttributesLaravelAttributesServiceProvider "
بعد النشر، تقوم بترحيل ملف الترحيل.
php artisan migrate
أولاً، يمكنك استخدام السمات في النموذج.
<?php
namespace App Models ;
use Illuminate Database Eloquent Factories HasFactory ;
use Illuminate Database Eloquent Model ;
use Milwad LaravelAttributes Traits Attributable ;
class Product extends Model
{
use HasFactory, Attributable;
}
بعد ذلك، يمكنك الوصول إلى علاقة attributes
وما إلى ذلك... .
إذا كنت تريد إرفاق سمة بنموذج، فيمكنك استخدام طريقة attachAttribute
.
تأخذ طريقة attachAttribute
title
value
.
$ product = Product:: query ()-> create ([
' name ' => ' milwad ' ,
' content ' => ' laravel attributes ' ,
]);
$ product -> attachAttribute ( ' age ' , ' 17 ' );
إذا كان لديك سمات متعددة، يمكنك استخدام طريقة attachAttributes
لحفظ السمات الخاصة بالنموذج.
$ product = Product:: query ()-> create ([
' name ' => ' milwad ' ,
' content ' => ' text ' ,
]);
$ data = [
[
' title ' => ' milwad ' ,
' value ' => ' developer ' ,
],
[
' title ' => ' milwad2 ' ,
' value ' => ' developer2 ' ,
],
[
' title ' => ' milwad3 ' ,
' value ' => ' developer3 ' ,
],
[
' title ' => ' milwad4 ' ,
' value ' => ' developer4 ' ,
],
[
' title ' => ' milwad5 ' ,
' value ' => ' developer5 ' ,
],
[
' title ' => ' milwad6 ' ,
' value ' => ' developer6 ' ,
],
];
$ product -> attachAttributes ( $ data );
إذا كنت تريد استرداد السمات من العلاقة، يمكنك استخدام attributes
.
$ product = Product:: query ()-> with ( ' attributes ' )-> get ();
$ product -> attributes
ربما تريد التحقق من أن أحد النماذج يحتوي على قيمة سمة يمكنك استخدام طريقة hasAttributeValue
.
if ( $ product -> hasAttributeValue ( ' 17 ' )) {
return ' attribute value ' ;
}
return ' no attribute value ' ;
ربما تريد التحقق من أن أحد النماذج يحتوي على عنوان سمة يمكنك استخدام طريقة hasAttributeTitle
.
if ( $ product -> hasAttributeTitle ( ' milwad ' )) {
return ' attribute title ' ;
}
return ' no attribute title ' ;
إذا كنت تريد حذف جميع سمات نموذج واحد، فيمكنك استخدام طريقة deleteAllAttribute
.
$ product -> deleteAllAttribute ();
إذا كنت تريد حذف سمة معينة من النموذج، فيمكنك استخدام طريقة deleteAttribute
.
$ product -> deleteAttribute ( ' title ' , ' value ' );
إذا كنت تريد حذف سمة معينة حسب العنوان، يمكنك استخدام طريقة deleteAttributeByTitle
.
ربما لديك سمتان بنفس العنوان، إذا قمت بحذفهما بهذه الطريقة، فسيتم حذف سمتين
$ product -> deleteAttributeByTitle ( ' title ' );
إذا كنت ترغب في حذف سمة معينة حسب القيمة، يمكنك استخدام طريقة deleteAttributeByValue
.
ربما لديك سمتان بنفس القيمة، إذا قمت بحذفهما بهذه الطريقة، فسيتم حذف سمتين
$ product -> deleteAttributeByValue ( ' value ' );
قم بإجراء الاختبارات باستخدام:
vendor/bin/pest
composer test
composer test-coverage
إذا كنت تريد تغيير اسم جدول الترحيل أو تغيير النموذج الافتراضي، فيمكنك استخدام تكوين laravel-attributes
الموجود في مجلد config
.
<?php
return [
/*
* Table config
*
* Here it's a config of migrations.
*/
' tables ' => [
/*
* Get table name of migration.
*/
' name ' => ' attributes ' ,
/*
* Use uuid as primary key.
*/
' uuids ' => false , // Also in beta !!!
],
/*
* Model class name for attributes table.
*/
' attributes_model ' => Milwad LaravelAttributes Attribute::class,
];
هذا المشروع موجود بفضل جميع الأشخاص الذين ساهموا فيه. المساهمة
إذا وجدت خطأً يتعلق بالأمان، فيرجى إرسال بريد إلكتروني إلى [email protected] بدلاً من استخدام أداة تعقب المشكلات.
إذا كانت هذه الحزمة مفيدة لك، يمكنك شراء القهوة لي :) ❤️
0xf208a562c5a93DEf8450b656c3dbc1d0a53BDE58