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
如果您想更改迁移表名称或更改默认模型,您可以使用config
文件夹中存在的laravel-attributes
配置。
<?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