centrex / laravel-addresses
Manage address in laravel
Requires
- php: ^8.1|^8.2
- illuminate/database: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
- webpatser/laravel-countries: ^1.5
- webpatser/laravel-uuid: ^3.0|^4.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- rector/rector: ^0.18.12
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2024-12-20 14:07:26 UTC
README
This is where your description should go. Limit it to a paragraph or two. Consider adding a small example.
Contents
Installation
You can install the package via composer:
composer require centrex/laravel-addresses
You can run the migrations with:
php artisan migrate
You can publish the config file with:
php artisan vendor:publish --tag="addresses-config"
Usage
First, add our HasAddresses
trait to your model.
<?php namespace App\Models; use Lecturize\Addresses\Traits\HasAddresses; use Illuminate\Database\Eloquent\Model; class Post extends Model { use HasAddresses; // ... } ?>
Add an Address to a Model
$post = Post::find(1); $post->addAddress([ 'street' => '123 Example Drive', 'city' => 'Vienna', 'post_code' => '1110', 'country' => 'AT', // ISO-3166-2 or ISO-3166-3 country code 'is_primary' => true, // optional flag ]);
Alternativly you could do...
$address = [ 'street' => '123 Example Drive', 'city' => 'Vienna', 'post_code' => '1110', 'country' => 'AT', // ISO-3166-2 or ISO-3166-3 country code 'is_primary' => true, // optional flag ]; $post->addAddress($address);
Available attributes are street
, street_extra
, city
, post_code
, state
, country
, state
, notes
(for internal use). You can also use custom flags like is_primary
, is_billing
& is_shipping
. Optionally you could also pass lng
and lat
, in case you deactivated the included geocoding functionality and want to add them yourself.
Check if Model has Addresses
if ($post->hasAddresses()) { // Do something }
Get all Addresses for a Model
$addresses = $post->addresses()->get();
Get primary/billing/shipping Addresses
$address = $post->getPrimaryAddress(); $address = $post->getBillingAddress(); $address = $post->getShippingAddress();
Update an Address for a Model
$address = $post->addresses()->first(); // fetch the address $post->updateAddress($address, $new_attributes);
Delete an Address from a Model
$address = $post->addresses()->first(); // fetch the address $post->deleteAddress($address); // delete by passing it as argument
Delete all Addresses from a Model
$post->flushAddresses();
Testing
๐งน Keep a modern codebase with Pint:
composer lint
โ Run refactors using Rector
composer refacto
โ๏ธ Run static analysis using PHPStan:
composer test:types
โ Run unit tests using PEST
composer test:unit
๐ Run the entire test suite:
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Credits
License
The MIT License (MIT). Please see License File for more information.