nunomazer / laravel-addressable
Laravel Addressable是一个用于地址簿管理的多态Laravel包。您可以轻松地将地址添加到任何Eloquent模型。
1.1.0
2021-04-03 16:13 UTC
Requires
- php: ^7.3.0 || ^8.0.0
- illuminate/console: ^8.0.0 || ^9.0.0
- illuminate/database: ^8.0.0 || ^9.0.0
- illuminate/support: ^8.0.0 || ^9.0.0
- jackpopp/geodistance: ^1.2.0
- rinvex/countries: ^7.0.0
- rinvex/laravel-support: ^5.0.0
Requires (Dev)
- codedungeon/phpunit-result-printer: ^0.30.0
- illuminate/container: ^8.0.0 || ^9.0.0
- phpunit/phpunit: ^9.5.0
README
这是一个用于地址簿管理的多态Laravel包。您可以轻松地将地址添加到任何Eloquent模型。
此包基于Rinvex Addresses包
安装
-
使用composer安装此包
composer require nunomazer/laravel-addressable
-
发布资源(迁移和配置文件)
php artisan vendor:publish
-
如果您需要更改数据库表名,请编辑配置文件
config/addressable.php
// Addresses Database Tables 'tables' => [ 'addresses' => 'addresses', ],
-
通过以下命令执行迁移
php artisan migrate
-
完成!
用法
要将地址支持添加到您的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)发布。