nunomazer/laravel-addressable

Laravel Addressable是一个用于地址簿管理的多态Laravel包。您可以轻松地将地址添加到任何Eloquent模型。

1.1.0 2021-04-03 16:13 UTC

This package is auto-updated.

Last update: 2024-08-29 05:43:55 UTC


README

这是一个用于地址簿管理的多态Laravel包。您可以轻松地将地址添加到任何Eloquent模型。

此包基于Rinvex Addresses

安装

  1. 使用composer安装此包

    composer require nunomazer/laravel-addressable
  2. 发布资源(迁移和配置文件)

    php artisan vendor:publish
  3. 如果您需要更改数据库表名,请编辑配置文件config/addressable.php

     // Addresses Database Tables
     'tables' => [
         'addresses' => 'addresses',
     ],
  4. 通过以下命令执行迁移

    php artisan migrate
  5. 完成!

用法

要将地址支持添加到您的Eloquent模型,只需使用\NunoMazer\Addressable\Traits\Addressable特质。

<?php

namespace App\Models;

...

use NunoMazer\Addressable\Traits\Addressable;

class User extends Model
{
    use Addressable;

管理您的地址

// Get instance of your model
$user = new \App\Models\User::find(1);

// Create a new address
// note that this are fake informations
$user->addresses()->create([
    'label' => 'Default Address',
    'organization' => 'DN42',
    'country_code' => 'br',
    'state' => 'Paraná',
    'city' => 'Ponta Grossa',
    'line_1' => 'Av. Carlos Cavalcanti',
    'number' => '200',
    'complement' => 'Apt #44',
    'postal_code' => '84000-100',
    'extra' => [
            'ibge_code' => '300'    
        ],
    'latitude' => '31.2467601',
    'longitude' => '29.9020376',
    'is_primary' => true,
    'is_billing' => true,
    'is_shipping' => true,
]);

// Create multiple new addresses
$user->addresses()->createMany([
    [...],
    [...],
    [...],
]);

// Find an existing address
$address = app('addressable.address')->find(1);

// Update an existing address
$address->update([
    'label' => 'Default Work Address',
]);

// Delete address
$address->delete();

// Alternative way of address deletion
$user->addresses()->where('id', 123)->first()->delete();

管理您的地址模型

API直观且简单直接,让我们快速浏览一下

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

// Scope Primary Addresses
$primaryAddresses = app('addressable.address')->isPrimary()->get();

// Scope Billing Addresses
$billingAddresses = app('addressable.address')->isBilling()->get();

// Scope Shipping Addresses
$shippingAddresses = app('addressable.address')->isShipping()->get();

// Scope Addresses in the given country
$egyptianAddresses = app('addressable.address')->InCountry('eg')->get();

// Find all users within 5 kilometers radius from the latitude/longitude 31.2467601/29.9020376
$fiveKmAddresses = \App\Models\User::findByDistance(5, 'kilometers', '31.2467601', '29.9020376')->get();

// Alternative method to find users within certain radius
$user = new \App\Models\User();
$users = $user->lat('31.2467601')->lng('29.9020376')->within(5, 'kilometers')->get();

变更日志

有关项目的完整历史记录,请参阅变更日志

支持

以下支持渠道随时可用

贡献与协议

感谢您考虑为该项目做出贡献!贡献指南可在CONTRIBUTING.md中找到。

欢迎提交错误报告、功能请求和拉取请求。

安全漏洞

如果您在此项目中发现安全漏洞,请提交问题。

许可证

此软件根据MIT许可证(MIT)发布。