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.0Laravel 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