risetechapps / address-for-laravel
Requires
- php: ^8.1
- illuminate/support: ^9.0|^10.0
- risetechapps/has-uuid-for-laravel: ^1.0.0
- risetechapps/monitoring-for-laravel: ^2.2.0
- risetechapps/to-upper-for-laravel: ^1.0.0
- tpetry/laravel-postgresql-enhanced: 2.3.4
Requires (Dev)
- orchestra/testbench: ^7.0|^8.0
- phpunit/phpunit: ^10.0
README
Laravel Address é um pacote para Laravel que permite gerenciar diferentes tipos de endereços (padrão, entrega e cobrança) associados aos seus models de forma simples e eficiente.
📦 Instalação
✅ Requisitos
- PHP >= 8.0
- Laravel >= 10
- Composer
⚙️ Passo a Passo
- Instale o package via Composer:
composer require risetechapps/address-for-laravel
- Adicione as traits ao seu model:
use RiseTechApps\Address\Traits\HasAddress\HasAddress; use RiseTechApps\Address\Traits\HasAddress\HasAddressBilling; use RiseTechApps\Address\Traits\HasAddress\HasAddressDelivery; class Client extends Model { use HasFactory, HasAddress, HasAddressDelivery, HasAddressBilling; }
- Execute as migrations:
php artisan migrate
✨ Funcionalidades
- 🏷 Address: Endereço padrão para qualquer model.
- 🏷 Address Delivery: Suporte a múltiplos endereços de entrega.
- 🏷 Address Billing: Suporte a múltiplos endereços de cobrança.
💡 Exemplos de Uso
Criar um endereço padrão
$client = Client::find(1); $client->address()->create([ 'street' => 'Rua Exemplo', 'number' => '123', 'city' => 'São Paulo', 'state' => 'SP', 'zipcode' => '01234-567', ]);
Adicionar endereço de entrega
$client->deliveryAddresses()->create([ 'street' => 'Av. das Entregas', 'number' => '456', 'city' => 'Campinas', 'state' => 'SP', 'zipcode' => '13000-000', ]);
Adicionar endereço de cobrança
$client->billingAddresses()->create([ 'street' => 'Rua da Cobrança', 'number' => '789', 'city' => 'Ribeirão Preto', 'state' => 'SP', 'zipcode' => '14000-000', ]);
Enviando um request com endereço incluído
Caso envie um payload contendo address
, address_billing
ou address_delivery
, os dados serão automaticamente persistidos com o model:
{ "name": "João da Silva", "email": "joao@example.com", "address": { "street": "Rua Principal", "number": "100", "city": "São Paulo", "state": "SP", "zipcode": "01000-000" }, "address_billing": [ { "street": "Rua da Fatura", "number": "200", "city": "São Paulo", "state": "SP", "zipcode": "02000-000" } ], "address_delivery": [ { "street": "Av. das Entregas", "number": "300", "city": "Campinas", "state": "SP", "zipcode": "13000-000" } ] }
Esse comportamento é automático desde que seu controller/model esteja configurado para aceitar os relacionamentos e realizar a persistência corretamente.
🧪 Testes
Para rodar os testes, execute:
php artisan test
Ou usando PHPUnit diretamente:
./vendor/bin/phpunit
Certifique-se de que todas as dependências estão instaladas e o ambiente .env.testing
está configurado corretamente.
🤝 Como Contribuir
Contribuições são super bem-vindas! Para colaborar:
- Faça um fork do repositório
- Crie uma branch com sua feature (
feature/nome-da-feature
) - Faça o commit das suas alterações
- Envie um Pull Request
📄 Licença
Este projeto é licenciado sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.
💡 Autor
Desenvolvido com 💙 por Rise Tech