All Projects → Lecturize → Laravel Addresses

Lecturize / Laravel Addresses

Licence: mit
Simple address and contact management for Laravel.

Labels

Projects that are alternatives of or similar to Laravel Addresses

Nova Indicator Field
A colour-coded indicator field for Laravel Nova
Stars: ✭ 108 (-2.7%)
Mutual labels:  laravel
Laravel Repository
Repository Design Pattern for Laravel 5 with Eloquent or Collection
Stars: ✭ 109 (-1.8%)
Mutual labels:  laravel
Buy All Steam Games
see how much does it cost to buy all steam games
Stars: ✭ 110 (-0.9%)
Mutual labels:  laravel
Townhouse
[WORK IN PROGRESS] A Multitenancy package for Laravel that keeps each tenant in a separate database.
Stars: ✭ 108 (-2.7%)
Mutual labels:  laravel
Laravel Translations Loader
Webpack loader to import Laravel translation files (PHP or JSON) into your JS bundle as JSON.
Stars: ✭ 109 (-1.8%)
Mutual labels:  laravel
Totoval
An out-of-the-box artisan API web-framework written in go.
Stars: ✭ 110 (-0.9%)
Mutual labels:  laravel
Cray
A Laravel package to help you generate nearly complete CRUD pages like crazy!
Stars: ✭ 108 (-2.7%)
Mutual labels:  laravel
Attended.io
An app to organise events and get feedback from attendees
Stars: ✭ 111 (+0%)
Mutual labels:  laravel
Laravel Editormd
Editor.md For Laravel5(支持七牛存储)
Stars: ✭ 109 (-1.8%)
Mutual labels:  laravel
Laqul
A complete starter kit that allows you create amazing apps that look native thanks to the Quasar Framework. Powered by an API developed in Laravel Framework using the easy GraphQL queries language. And ready to use the Google Firebase features.
Stars: ✭ 110 (-0.9%)
Mutual labels:  laravel
Dlaravel
Laravel and Docker
Stars: ✭ 108 (-2.7%)
Mutual labels:  laravel
Balance
Balance accounting (bookkeeping) system based on debit and credit principle
Stars: ✭ 109 (-1.8%)
Mutual labels:  laravel
Laravel Geo Routes
GeoLocation restricted routes for Laravel
Stars: ✭ 110 (-0.9%)
Mutual labels:  laravel
Log Viewer
Log viewer for laravel
Stars: ✭ 108 (-2.7%)
Mutual labels:  laravel
Laravel Alert
A Bootstrap alert helper for Laravel
Stars: ✭ 110 (-0.9%)
Mutual labels:  laravel
Helpers
A collection of Javascript String and Array helpers for Laravel developers
Stars: ✭ 108 (-2.7%)
Mutual labels:  laravel
Laravel Fpdf
Create PDFs with Laravel, provides FPDF version 1.82
Stars: ✭ 108 (-2.7%)
Mutual labels:  laravel
Crudbooster
Laravel CRUD Generator, Make an Advanced Web Application Quickly
Stars: ✭ 1,580 (+1323.42%)
Mutual labels:  laravel
Laravel 5 Snippets
Laravel 5 Snippets for Sublime Text
Stars: ✭ 110 (-0.9%)
Mutual labels:  laravel
Nova Tail Tool
A Laravel Nova tool to display the application log
Stars: ✭ 110 (-0.9%)
Mutual labels:  laravel

Latest Stable Version Total Downloads License

Laravel Addresses

Simple address and contact management for Laravel with automatical geocoding to add longitude and latitude. Uses the famous Countries package by Webpatser.

Installation

Require the package from your composer.json file

"require": {
	"lecturize/laravel-addresses": "^1.0"
}

and run $ composer update or both in one with $ composer require lecturize/laravel-addresses.

Configuration & Migration

$ php artisan vendor:publish --provider="Webpatser\Countries\CountriesServiceProvider"
$ php artisan vendor:publish --provider="Lecturize\Addresses\AddressesServiceProvider"

This will publish a config/countries.php, a config/lecturize.php and some migration files, that you'll have to run:

$ php artisan countries:migration
$ php artisan migrate

For migrations to be properly published ensure that you have added the directory database/migrations to the classmap in your projects composer.json.

Check out Webpatser\Countries readme to see how to seed their countries data to your database.

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();

Contacts

First, add our HasContacts trait to your model.

<?php namespace App\Models;

use Lecturize\Addresses\Traits\HasContacts;
use Illuminate\Database\Eloquent\Model;

class Team extends Model
{
    use HasContacts;

    // ...
}
?>
Add a Contact to a Model
$post = Team::find(1);
$post->addContact([
    'first_name' => 'Alex',
    'website'    => 'https://twitter.com/AMPoellmann',
    'is_primary' => true, // optional flag
]);

Relate Addresses with Contacts

Above all, addresses and contacts can be connected with an optional One To Many relationship. Like so you could assign multiple contacts to an address and retrieve them like so:

use Lecturize\Addresses\Models\Address;

$address = Address::find(1);
$contacts = $address->contacts;

foreach ($contacts as $contact) {
    //
}
use Lecturize\Addresses\Models\Address;

$contact = Address::find(1)
                  ->contacts()
                  ->first();
use Lecturize\Addresses\Models\Contact;

$contact = Contact::find(1);

return $contact->address->getHtml();

Changelog

  • [2021-02-02] v1.0 The geocode configuration option now defaults to false.

License

Licensed under MIT license.

Author

Handcrafted with love by Alexander Manfred Poellmann in Vienna & Rome.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].