laravel-addresses/docs/installation.md

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.

When you call $model->addAddress([...]) without a second argument, this type is used. Defaults to AddressLinkType::Other.