neuecommerce/addresses

Addresses是一个多态的Laravel包,用于地址簿管理。向任何Eloquent模型添加地址从未如此简单。

资助包维护!
neuecommerce

dev-main / 1.0.x-dev 2024-04-01 16:50 UTC

This package is auto-updated.

Last update: 2024-08-31 00:33:47 UTC


README

GitHub Tests Action Status GitHub Code Analysis Action Status Software License Latest Version on Packagist Total Downloads

Addresses是一个多态的Laravel包,用于地址簿管理。

向任何Eloquent模型添加地址从未如此简单,地址组织也有多种可能性,因为您可以为每个地址分配一个自定义类型,如shippingbilling等。这使得每个地址类型都可以有一个默认地址。例如,可以有一个默认的shipping address和一个默认的billing address,这在电子商务应用中非常常见。

安装

  1. 使用Composer安装包
composer require neuecommerce/addresses
  1. 发布迁移(可选)
php artisan vendor:publish --tag="neuecommerce-addresses-migrations"
  1. 发布配置文件(可选)
php artisan vendor:publish --tag="neuecommerce-addresses-config"
  1. 运行迁移
php artisan migrate

实现

为了向您的Eloquent模型添加地址支持,您需要确保您的模型实现了NeueCommerce\Addresses\Contracts\HasManyAddressesInterface接口和NeueCommerce\Addresses\Traits\HasManyAddresses特性。

以下是一个具有正确实现的模型示例

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use NeueCommerce\Addresses\Contracts\HasManyAddressesInterface;
use NeueCommerce\Addresses\Traits\HasManyAddresses;

class Customer extends Model implements HasManyAddressesInterface
{
    use HasManyAddresses;

    public $table = 'customers';
}

使用方法

在本节中,您将学习如何使用地址包并管理Eloquent模型中的地址。

为了简单起见,我们将使用一个Customer实体(我们在上一节中创建的实体)

$customer = Customer::first();

创建新的地址

创建新的地址非常简单。

示例
$address = $customer->addresses()->create([
    'type' => 'shipping',
    'display_name' => 'Default Shipping Address',
    'first_name' => 'John',
    'last_name' => 'Done',
    'address_1' => '3327 Colby Ave',
    'city' => 'Everett',
    'country_code' => 'US',
    'state' => 'Washington',
    'postal_code' => '98201',
    'latitude' => '47.972829',
    'longitude' => '-122.20793',
    'is_default' => true,
]);

更新现有地址

要更新地址,您需要获取要更新的地址,然后在地址实例上调用update()方法,并提供更新后的属性。

示例
// Find the address to update
$address = $customer->addresses()->whereType('shipping')->whereDefault()->first();

// Update the address
$address->update([
    'display_name' => 'Home Shipping Address',
]);

删除地址

要删除地址,您需要获取要删除的地址,然后在地址实例上调用delete()方法。

示例
// Find the address to delete
$address = $customer->addresses()->whereType('shipping')->whereDefault()->first();

// Delete the address
$address->delete();

测试

composer test

贡献

感谢您的关注。以下是一些贡献的多种方式。

许可证

本软件包是开源软件,许可证为MIT许可证