3.1 KiB
3.1 KiB
Installation & Configuration
Requirements
- PHP 8.1 or higher
- Laravel 9.x, 10.x, 11.x or 12.x
blax-software/laravel-workkit(pulled in automatically as a dependency)
Install via Composer
composer require blax-software/laravel-addresses
The service provider is registered automatically via Laravel's package auto-discovery.
Publish Migrations
php artisan vendor:publish --tag="addresses-migrations"
php artisan migrate
This creates three tables:
| Table | Purpose |
|---|---|
addresses |
Physical address records (street, city, coordinates …) |
address_links |
Polymorphic pivot connecting addresses to models |
address_assignments |
References an address link from another model context |
Publish Configuration (optional)
php artisan vendor:publish --tag="addresses-config"
This copies config/addresses.php into your application's config/ directory.
Configuration Reference
// config/addresses.php
return [
/*
|--------------------------------------------------------------------------
| Model Classes
|--------------------------------------------------------------------------
|
| Override with your own model classes if you need to extend the package
| models. Your custom models should extend the corresponding package model.
|
*/
'models' => [
'address' => \Blax\Addresses\Models\Address::class,
'address_link' => \Blax\Addresses\Models\AddressLink::class,
'address_assignment' => \Blax\Addresses\Models\AddressAssignment::class,
],
/*
|--------------------------------------------------------------------------
| Table Names
|--------------------------------------------------------------------------
|
| Change these if the default names collide with existing tables.
|
*/
'table_names' => [
'addresses' => 'addresses',
'address_links' => 'address_links',
'address_assignments' => 'address_assignments',
],
/*
|--------------------------------------------------------------------------
| Default Address Link Type
|--------------------------------------------------------------------------
|
| Applied when attaching an address without specifying a type.
|
*/
'default_link_type' => \Blax\Addresses\Enums\AddressLinkType::Other,
];
Models
Each model key maps to a fully-qualified class name. To customise behaviour, create your own model that extends the package model and update the config:
'models' => [
'address' => \App\Models\CustomAddress::class,
// ...
],
See Customization for details.
Table Names
All three table names are configurable. If you change them, make sure to update the published migration before running it.
Default Link Type
When you call $model->addAddress([...]) without a second argument, this type is used. Defaults to AddressLinkType::Other.