customd / laravel-addressable
Laravel Addressable 是一个用于管理属于您模型地址的 Laravel 扩展包。您可以通过简单的操作将地址添加到任何 eloquent 模型中。
v7.2.0
2023-08-04 00:22 UTC
Requires
- php: ^8.0.0
- illuminate/console: ^9.0|^10.0
- illuminate/database: ^9.0|^10.0
- illuminate/support: ^9.0|^10.0
- jackpopp/geodistance: ^1.2.0
- rinvex/countries: ^8.0.0
- spatie/laravel-package-tools: ^1.9.2
Requires (Dev)
- illuminate/container: ^9.0|^10.0
- nunomaduro/collision: ^6.0|^7.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^7.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5.0|^10.0
README
Custom D Addressable 是一个用于管理属于您模型地址的 Laravel 扩展包。您可以通过简单的操作将地址添加到任何 eloquent 模型中。
安装
-
通过 composer 安装此包
composer require customd/laravel-addresses
-
发布资源(迁移和配置文件)
php artisan vendor:publish --provider="CustomD\Addressable\AddressesServiceProvider"
-
运行迁移
php artisan migrate
-
完成!
用法
要为您的 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) 发布。