stylers/laravel-address

Laravel Address Manager
2,744 1
Install
composer require stylers/laravel-address
Latest Version:5.0
PHP:>=8.1
License:MIT
Last Updated:Jan 3, 2024
Links: GitHub  ·  Packagist
Maintainer: stylers

Laravel Address

Latest Stable Version Total Downloads License Build Status codecov Maintainability

Laravel version compatibility

Laravel version Package version
5.7 1.0
5.8 1.1
6.0 1.1
7.0 2.0
8.0 3.0
9.0 4.0
10.0 5.0

Installation

composer require stylers/laravel-address

You can publish the migration

php artisan vendor:publish --provider="Stylers\Address\Providers\AddressServiceProvider"

After the migration has been published, you can run the migrations

php artisan migrate

Usage

use Stylers\Address\Contracts\Models\Traits\HasAddressesInterface;
use Stylers\Address\Models\Traits\HasAddresses;

class User extends Authenticatable implements HasAddressesInterface
{
    use Notifiable;
    use HasAddresses;
}

Update or Create Address

If the $type is exists then will be update with $attributes.

use Stylers\Address\Enums\AddressTypeEnum;

$user = User::first();
$attributes = [
    "country" => "Hungary",
    "zip_code" => "1055",
    "city" => "Budapest",
    "name_of_public_place" => "Kossuth Lajos",
    "type_of_public_place" => "place",
    "number_of_house" => "1-3",
    "floor" => "42",
    "door" => "69",
    "latitude" => "47.5070738",
    "longitude" => "19.045599",
    "parcel_number" => "10086/0/A/3",
]; // array
$type = AddressTypeEnum::PRIMARY; // ?string
$address = $user->updateOrCreateAddress($attributes, $type); // AddressInterface

Delete Address

use Stylers\Address\Enums\AddressTypeEnum;

$user = User::first();
$type = AddressTypeEnum::PRIMARY; // ?string
$isDeleted = $user->deleteAddress($type); // boolean

Sync Address(es)

The syncAddresses() method delete all addressable address if $type is not exists in $arrayOfAttributes[$type][]. The syncAddresses() method create all $type of arrayOfAttributes[$type][] if type is not exists in addresses table.

use Stylers\Address\Enums\AddressTypeEnum;

$user = User::first();
$arrayOfAttributes = [
    AddressTypeEnum::MAILING => [
        "country" => "Hungary",
        "zip_code" => "1055",
        "city" => "Budapest",
        "name_of_public_place" => "Kossuth Lajos",
        "type_of_public_place" => "place",
        "number_of_house" => "1-3",
        "floor" => "42",
        "door" => "69",
        "latitude" => "47.5070738",
        "longitude" => "19.045599",
        "parcel_number" => "10086/0/A/3",
    ]
];
$addresses = $user->syncAddresses($arrayOfAttributes); // Collection

How to Test

$ docker run -it --rm -v $PWD:/app -w /app composer bash
$ composer install
$ ./vendor/bin/phpunit

Troubleshooting

# Fatal error: Allowed memory size of...
$ COMPOSER_MEMORY_LIMIT=-1 composer install

Related Packages

customd/laravel-addressable

Laravel Addressable is a Laravel package to manage addresses that belong to your...

1,442 1
rinvex/addressable

Rinvex Addressable is a polymorphic Laravel package, for addressbook management....

1 1
metamel/laravel-addresses

Metamel Addresses is a polymorphic Laravel package, for address book management....

3,799 4
pragmarx/zipcode

A worldwide address-by-zipcode searcher.

66,024 97