Пакет laravel-attributes — это инструмент, призванный помочь разработчикам Laravel легко управлять настраиваемыми атрибутами и реализовывать их в своих проектах. Он позволяет определять атрибуты непосредственно в моделях Eloquent, упрощая обработку динамических или вычисляемых свойств без прямого изменения схемы базы данных. С помощью этого пакета вы можете создавать и настраивать наборы атрибутов для моделей, что упрощает организацию и расширение обработки данных в приложениях Laravel. Это особенно полезно для проектов, которым требуются настраиваемые и гибкие модели данных.
У вас нет стресса по атрибутам! Вы можете создавать атрибуты для любой модели и отображать их, как пить воду :)
PHP: ^8.0Laravel Framework: ^9.0| Атрибуты | Л9 | Л10 |
|---|---|---|
| 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