customd/laravel-addressable

Laravel Addressable 是一个用于管理属于您模型地址的 Laravel 扩展包。您可以通过简单的操作将地址添加到任何 eloquent 模型中。

v7.2.0 2023-08-04 00:22 UTC

README

Custom D Addressable 是一个用于管理属于您模型地址的 Laravel 扩展包。您可以通过简单的操作将地址添加到任何 eloquent 模型中。

Packagist Scrutinizer Code Quality Travis StyleCI License

安装

  1. 通过 composer 安装此包

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

    php artisan vendor:publish --provider="CustomD\Addressable\AddressesServiceProvider"
  3. 运行迁移

    php artisan migrate
  4. 完成!

用法

要为您的 eloquent 模型添加地址支持,只需简单使用 \CustomD\Addressable\Traits\Addressable 特性。

管理您的地址

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

// Create a new address
$user->addresses()->create([
    'label' => 'Default Address',
    'given_name' => 'Jane',
    'family_name' => 'Doe',
    'organization' => 'Custom D',
    'country_code' => 'eg',
    'street' => '56 john doe st.',
    'state' => 'Canterbury',
    'city' => 'Christchurch',
    'postal_code' => '7614',
    'latitude' => '31.2467601',
    'longitude' => '29.9020376',
    'is_primary' => 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 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();

变更日志

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

支持

请在 GitHub 上提交一个问题。

贡献 & 协议

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

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

安全漏洞

如果您在此项目中发现安全漏洞,请发送电子邮件至 help@customd.com。所有安全漏洞都将得到及时处理。

许可证

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