stylers/laravel-address

Laravel 地址管理器

5.0 2024-01-03 14:00 UTC

This package is auto-updated.

Last update: 2024-09-03 15:21:27 UTC


README

Latest Stable Version Total Downloads License Build Status codecov Maintainability

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