Laravel Addressable is a polymorphic Laravel package, for management different types of address. You can add addresses to any eloquent model with laravel addressable package. Hope it will help and make easier your life
-
Install the package via composer:
composer require awalhadi/addressable
-
Execute database migrates by the following
php artisan migrate
-
Public Config file
php artisan vendor:publish --provider="Awalhadi\Addressable\Providers\AddressableServiceProvider" --tag="config"
Setup done
Which model you want to add address, simply use Addressable
Trait in your eloquent model like below
use Awalhadi\Addressable\Traits\Addressable;
class ModelName {
use Addressable;
}
// Get instance of your model
$user = new \App\Models\User::find(1);
// Create a new address
$user->addresses()->create([
'label' => 'Default Address',
'given_name' => 'A Awal',
'family_name' => 'Hadi',
'organization' => 'ITclan BD',
'country_code' => 'bd',
'street' => '10 Azompur Uttora',
'state' => 'Rajshahi',
'city' => 'Natore',
'postal_code' => '6400',
'lat' => '24.4547889',
'lng' => '88.9717818',
'is_primary' => true,
'is_billing' => true,
'is_shipping' => true,
]);
// Create multiple new addresses
$user->addresses()->createMany([
[...],
[...],
[...],
]);
// Alternative way of address deletion
$user->addresses()->where('id', 123)->first()->delete();
The API is intuitive and very straight forward, so let's give it a quick look:
// Get instance of your model
$user = new \App\Models\User::find(1);
// Get attached addresses collection
$user->addresses;
// Get attached addresses query builder
$user->addresses();
// Find all users within 5 kilometers radius from the lat/lng 31.2467601/29.9020376
$fiveKmAddresses = \App\Models\User::findByDistance('31.2467601', '29.9020376')->get();
$fiveKmAddresses = \App\Models\User::findByDistance('31.2467601', '29.9020376', 5, 'kilometers')->get();
findByDistance
methods except four parameters
findByDistance(latitude, longitude, distance=10, unit=kilometers)
The Generate free qr code:
👉 If you are interested to step on as the main maintainer of this package, please reach out to me!
This software is released under The MIT License (MIT).
(c) 2022 awalhadi, All rights reserved.