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