dillingham/地区

Laravel 中的自动地址规范化

资助包维护!
dillingham

0.0.8 2021-10-08 16:21 UTC

This package is auto-updated.

Last update: 2024-09-14 04:53:30 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

这是一个 Laravel 包,可以自动规范化地址数据。您不需要重复存储城市、州和邮政编码,而是创建表并引用外键。此包接受字符串表示形式,检查它是否存在或创建它,并添加关系。此包还提供访问器,使您感觉不到任何规范化。

安装

您可以通过 composer 安装此包

composer require dillingham/locality

您可以使用以下命令发布配置文件

php artisan vendor:publish --provider="Dillingham\Locality\LocalityServiceProvider" --tag="locality-config"

请将以下列添加到您模型的迁移中

$table->addAddress();

这只是一个添加这些列的简写

将迁移 5 个表

php artisan migrate

然后添加 HasAddress 特性

<?php

namespace App\Models;

use Dillingham\Locality\HasAddress;

class Profile extends Model
{
  use HasAddress;
}

用法

Profile::create([
    'address_1' => '104 India St',
    'address_2' => 'Apt #3L',
    'admin_level_2' => 'Brookyln',    
    'admin_level_1' => 'NY',
    'postal_code' => '11222',
]);

自动地,特性会在存储配置文件时使用 firstOrCreate

'admin_level_2' => 'Brookyln'

成为 admin_level_2 表中布鲁克林的 foreign id

'admin_level_2_id' => 332

访问值

通过访问器访问关系的字符串值

$profile->admin_level_2 == 'Brooklyn'
$profile->admin_level_1 == 'NY'

这些访问器在幕后调用关系,在集合中预加载

注意:在保存时,完整的地址格式是静态存储的

$profile->formatted_address == '104 India St, #3l Brooklyn, NY 11222`

附加功能

以下是一些可选的、松散相关的功能:

依赖过滤器

以下是一些用于通过位置信息过滤模型的 API 路由

Route::localityDepenentOptions();

以下假设 routes/api.php 和 RouteServiceProvider.php 中的前缀

GET /api/locality/countries
{
    "data": [
        {
            "value": 1,
            "display": "US"
        }
    ]
}
GET /api/locality/admin_level_2?country_id=1
{
    "data": [
        {
            "value": 1,
            "display": "NY"
        }
    ]
}
GET /api/locality/admin_level_1?admin_level_2_id=1
{
    "data": [
        {
            "value": 1,
            "display": "Brooklyn"
        }
    ]
}
GET /api/locality/postal_code?admin_level_1_id=1
{
    "data": [
        {
            "value": 1,
            "display": "11222"
        }
    ]
}

测试

composer test

变更日志

请参阅 CHANGELOG 了解最近更改的详细信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全漏洞

请查阅 我们的安全策略 了解如何报告安全漏洞。

鸣谢

许可证

MIT 许可证(MIT)。请参阅 许可证文件 了解更多信息。