chuckcms / laravel-addresses

ChuckCMS存储地址的模块。

v0.1.1 2022-06-11 14:26 UTC

This package is auto-updated.

Last update: 2024-09-11 19:20:29 UTC


README

Latest Version on Packagist Scrutinizer Code Quality StyleCI Total Downloads

在Laravel中管理Eloquent模型的地址的简单方法。受到以下包的启发

安装

运行以下命令来安装包

composer require chuckcms/laravel-addresses

发布配置和迁移文件

php artisan vendor:publish --provider="Chuckcms\Addresses\AddressesServiceProvider"

此命令将发布一个 config/addresses.php 和一个迁移文件。

您可以通过更改这两个文件来修改默认字段及其规则。

发布后,您可以运行迁移

php artisan migrate

使用方法

您可以在任何模型上使用 HasAddresses 特性。

<?php

namespace App\Models;

use Chuckcms\Addresses\Traits\HasAddresses;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use HasAddresses;

    // ...
} 

执行此操作后,您可以使用以下方法。

向模型添加地址

$post = Post::first();
$post->addAddress([
	'label' 				=> 'My address', // required
	'street' 				=> 'Main Street', // defaults to: null
	'housenumber' 				=> '100', // defaults to: null
	'housenumber_postfix' 			=> 'B1', // defaults to: null
	'postal_code'				=> '10001', // defaults to: null
	'city'					=> 'Chuck City', // defaults to: null
	'state'					=> 'New Chuck State', // defaults to: null
	'country'				=> 'Chuckland', // defaults to: null
	'latitude'				=> 51.13128, // defaults to: null
	'longitude'				=> 4.57041, // defaults to: null
	'is_primary'				=> true, // defaults to: false
	'is_billing'				=> false, // defaults to: false
	'is_shipping'				=> false, // defaults to: false
]);

更新现有地址

$post = Post::first();
$address = $post->getPrimaryAddress();

$post->updateAddress($address, ['label' => 'My new address']);

从模型中删除地址

$post = Post::first();
$address = $post->addresses()->first();

if ($post->deleteAddress($address)) {
	//do something
}

确定模型是否有任何地址

$post = Post::first();

if ($post->hasAddresses()) {
	//do something
}

确定模型是否有(其中一个)指定的地址。

use Chuckcms\Addresses\Models\Address;

$post = Post::find();
$address = Address::first();

if ($post->hasAddress($address)) {
	//do something
}

//OR
if ($post->hasAddress($address->id)) {
	//do something
}

//OR
$addresses = Address::where('city', 'Chuck City')->get();
if ($post->hasAddress($addresses)) {
	//do something
}

//OR
$addresses = Address::where('state', 'New Chuck State')->pluck('id')->toArray();
if ($post->hasAddress($addresses)) {
	//do something
}

其中一个 指定的地址属于模型时,将返回 true。

获取器

您可以使用以下方法检索地址和某些属性。

获取模型的默认地址。

$post = Post::first();

$primaryAddress = $post->getPrimaryAddress();

获取模型的账单地址。

$post = Post::first();

$billingAddress = $post->getBillingAddress();

获取模型的配送地址。

$post = Post::first();

$shippingAddress = $post->getShippingAddress();

获取模型所有地址的标签。

$post = Post::first();

$labels = $post->getAddressLabels();

许可证

MIT 许可证 下授权。

作者

Karel Brijs 在安特卫普编写。