El paquete laravel-attributes
es una herramienta diseñada para ayudar a los desarrolladores de Laravel a administrar e implementar fácilmente atributos personalizados en sus proyectos. Le permite definir atributos directamente en los modelos de Eloquent, lo que simplifica el manejo de propiedades dinámicas o calculadas sin modificar directamente el esquema de la base de datos. Con este paquete, puede crear y configurar conjuntos de atributos para modelos, lo que facilita la organización y ampliación del manejo de datos en aplicaciones Laravel. Es especialmente útil para proyectos que requieren modelos de datos flexibles y personalizables.
¡No tienes ningún estrés por los atributos! Puedes crear atributos para cualquier modelo y mostrarlos como beber agua :)
PHP: ^8.0
Laravel Framework: ^9.0
Atributos | L9 | L10 |
---|---|---|
1.0 | ✅ | ✅ |
composer require milwad/laravel-attributes
Después de publicar los archivos de configuración.
php artisan vendor:publish --provider= " MilwadLaravelAttributesLaravelAttributesServiceProvider "
Después de la publicación, migra el archivo de migración.
php artisan migrate
Primero, usas el rasgo en el modelo.
<?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;
}
Después, tiene acceso a la relación attributes
, etc.
Si desea adjuntar un atributo a un modelo, puede utilizar el método attachAttribute
.
El método attachAttribute
toma un title
y value
.
$ product = Product:: query ()-> create ([
' name ' => ' milwad ' ,
' content ' => ' laravel attributes ' ,
]);
$ product -> attachAttribute ( ' age ' , ' 17 ' );
Si tiene varios atributos, puede utilizar el método attachAttributes
para guardar los atributos de un modelo.
$ 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 );
Si desea recuperar atributos de la relación, puede utilizar attributes
.
$ product = Product:: query ()-> with ( ' attributes ' )-> get ();
$ product -> attributes
Tal vez desee comprobar que un modelo tiene un valor de atributo; puede utilizar el método hasAttributeValue
.
if ( $ product -> hasAttributeValue ( ' 17 ' )) {
return ' attribute value ' ;
}
return ' no attribute value ' ;
Tal vez desee comprobar que un modelo tiene un título de atributo; puede utilizar el método hasAttributeTitle
.
if ( $ product -> hasAttributeTitle ( ' milwad ' )) {
return ' attribute title ' ;
}
return ' no attribute title ' ;
Si desea eliminar todos los atributos de un modelo, puede utilizar el método deleteAllAttribute
.
$ product -> deleteAllAttribute ();
Si desea eliminar un atributo específico de un modelo, puede utilizar el método deleteAttribute
.
$ product -> deleteAttribute ( ' title ' , ' value ' );
Si desea eliminar un atributo específico por título, puede utilizar el método deleteAttributeByTitle
.
Tal vez tengas dos atributos con el mismo título, si eliminas con este método, se eliminarán dos atributos.
$ product -> deleteAttributeByTitle ( ' title ' );
Si desea eliminar un atributo específico por valor, puede utilizar el método deleteAttributeByValue
.
Quizás tengas dos atributos con el mismo valor, si eliminas con este método, se eliminarán dos atributos
$ product -> deleteAttributeByValue ( ' value ' );
Ejecute las pruebas con:
vendor/bin/pest
composer test
composer test-coverage
Si desea cambiar el nombre de la tabla de migración o cambiar el modelo predeterminado, puede usar la configuración de laravel-attributes
que existe en la carpeta 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,
];
Este proyecto existe gracias a todas las personas que contribuyen. CONTRIBUYENDO
Si encuentra un error relacionado con la seguridad, envíe un correo electrónico a [email protected] en lugar de utilizar el rastreador de problemas.
Si este paquete te resulta útil, puedes comprarme un café :) ❤️
0xf208a562c5a93DEf8450b656c3dbc1d0a53BDE58