O pacote laravel-attributes
é uma ferramenta projetada para ajudar os desenvolvedores Laravel a gerenciar e implementar facilmente atributos personalizados em seus projetos. Ele permite definir atributos diretamente nos modelos do Eloquent, simplificando o tratamento de propriedades dinâmicas ou calculadas sem modificar diretamente o esquema do banco de dados. Com este pacote, você pode criar e configurar conjuntos de atributos para modelos, facilitando a organização e extensão do tratamento de dados em aplicações Laravel. É especialmente útil para projetos que exigem modelos de dados personalizáveis e flexíveis.
Você não tem nenhum estresse por atributos! Você pode criar atributos para qualquer modelo e exibir como beber água :)
PHP: ^8.0
Laravel Framework: ^9.0
Atributos | L9 | L10 |
---|---|---|
1,0 | ✅ | ✅ |
composer require milwad/laravel-attributes
Depois de publicar os arquivos de configuração.
php artisan vendor:publish --provider= " MilwadLaravelAttributesLaravelAttributesServiceProvider "
Após a publicação, você migra o arquivo de migração.
php artisan migrate
Primeiro, você usa trait no 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;
}
Depois, você tem acesso a relação attributes
e etc... .
Se você deseja anexar atributos a um modelo, você pode usar o método attachAttribute
.
O método attachAttribute
recebe um title
e value
.
$ product = Product:: query ()-> create ([
' name ' => ' milwad ' ,
' content ' => ' laravel attributes ' ,
]);
$ product -> attachAttribute ( ' age ' , ' 17 ' );
Se você tiver vários atributos, poderá usar o método attachAttributes
para salvar atributos para um 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 );
Se você deseja recuperar atributos de uma relação, você pode usar attributes
.
$ product = Product:: query ()-> with ( ' attributes ' )-> get ();
$ product -> attributes
Talvez você queira verificar se um modelo tem um valor de atributo, você pode usar o método hasAttributeValue
.
if ( $ product -> hasAttributeValue ( ' 17 ' )) {
return ' attribute value ' ;
}
return ' no attribute value ' ;
Talvez você queira verificar se um modelo tem um título de atributo, você pode usar o método hasAttributeTitle
.
if ( $ product -> hasAttributeTitle ( ' milwad ' )) {
return ' attribute title ' ;
}
return ' no attribute title ' ;
Se você deseja excluir todos os atributos de um modelo, você pode usar o método deleteAllAttribute
.
$ product -> deleteAllAttribute ();
Se você deseja excluir um atributo específico de um modelo, você pode usar o método deleteAttribute
.
$ product -> deleteAttribute ( ' title ' , ' value ' );
Se você deseja excluir um atributo específico por título, você pode usar o método deleteAttributeByTitle
.
Talvez você tenha dois atributos com o mesmo título, se você excluir com este método, serão excluídos dois atributos
$ product -> deleteAttributeByTitle ( ' title ' );
Se você deseja excluir um atributo específico por valor, você pode usar o método deleteAttributeByValue
.
Talvez você tenha dois atributos com o mesmo valor, se você excluir com este método, serão excluídos dois atributos
$ product -> deleteAttributeByValue ( ' value ' );
Execute os testes com:
vendor/bin/pest
composer test
composer test-coverage
Se você quiser alterar o nome da tabela de migração ou alterar o modelo padrão, você pode usar a configuração laravel-attributes
que existe na pasta 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 projeto existe graças a todas as pessoas que contribuem. CONTRIBUINDO
Se você encontrou um bug relacionado à segurança, envie um email para [email protected] em vez de usar o rastreador de problemas.
Se este pacote for útil para você, pode comprar um café para mim :) ❤️
0xf208a562c5a93DEf8450b656c3dbc1d0a53BDE58