stylers / laravel-address
Laravel 地址管理器
5.0
2024-01-03 14:00 UTC
Requires
- php: >=8.1
- illuminate/database: ~10
- illuminate/support: ~10
- laravel/legacy-factories: ^1.3.2
Requires (Dev)
- illuminate/database: ~10
- mockery/mockery: ^1.6
- orchestra/testbench: ^8.0
- phpmd/phpmd: ^2.6|^2.7|^2.8|^2.9|^2.15
- phpunit/phpunit: ^7.3|^8.0|^9.0|^10
This package is auto-updated.
Last update: 2024-09-03 15:21:27 UTC
README
Laravel 版本兼容性
安装
composer require stylers/laravel-address
你可以发布迁移
php artisan vendor:publish --provider="Stylers\Address\Providers\AddressServiceProvider"
迁移发布后,你可以运行迁移
php artisan migrate
用法
use Stylers\Address\Contracts\Models\Traits\HasAddressesInterface; use Stylers\Address\Models\Traits\HasAddresses; class User extends Authenticatable implements HasAddressesInterface { use Notifiable; use HasAddresses; }
更新或创建地址
如果 $type
已存在,则将使用 $attributes
更新。
use Stylers\Address\Enums\AddressTypeEnum; $user = User::first(); $attributes = [ "country" => "Hungary", "zip_code" => "1055", "city" => "Budapest", "name_of_public_place" => "Kossuth Lajos", "type_of_public_place" => "place", "number_of_house" => "1-3", "floor" => "42", "door" => "69", "latitude" => "47.5070738", "longitude" => "19.045599", "parcel_number" => "10086/0/A/3", ]; // array $type = AddressTypeEnum::PRIMARY; // ?string $address = $user->updateOrCreateAddress($attributes, $type); // AddressInterface
删除地址
use Stylers\Address\Enums\AddressTypeEnum; $user = User::first(); $type = AddressTypeEnum::PRIMARY; // ?string $isDeleted = $user->deleteAddress($type); // boolean
同步地址
如果 $type
不存在于 $arrayOfAttributes[$type][]
中,则 syncAddresses()
方法将删除所有地址。如果类型不存在于 addresses
表中,则 syncAddresses()
方法将创建所有 $type
类型的 arrayOfAttributes[$type][]
。
use Stylers\Address\Enums\AddressTypeEnum; $user = User::first(); $arrayOfAttributes = [ AddressTypeEnum::MAILING => [ "country" => "Hungary", "zip_code" => "1055", "city" => "Budapest", "name_of_public_place" => "Kossuth Lajos", "type_of_public_place" => "place", "number_of_house" => "1-3", "floor" => "42", "door" => "69", "latitude" => "47.5070738", "longitude" => "19.045599", "parcel_number" => "10086/0/A/3", ] ]; $addresses = $user->syncAddresses($arrayOfAttributes); // Collection
如何测试
$ docker run -it --rm -v $PWD:/app -w /app composer bash
$ composer install
$ ./vendor/bin/phpunit
故障排除
# Fatal error: Allowed memory size of...
$ COMPOSER_MEMORY_LIMIT=-1 composer install