chantouch/laravel-addresses

为 Laravel 提供简单地址和联系管理。

2.0.0 2024-05-06 07:06 UTC

This package is auto-updated.

Last update: 2024-09-06 07:51:26 UTC


README

Latest Stable Version Total Downloads License

Laravel Addresses

为 Laravel 提供带有自动地理编码添加经纬度的简单地址和联系管理。

安装

从你的 composer.json 文件中要求此包

"require": {
	"chantouch/laravel-addresses": "^1.0"
}

并运行 $ composer update 或两者合并使用 $ composer require chantouch/laravel-addresses

配置和迁移

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

这将发布一个 config/laravel-address.php 和一些迁移文件,你需要运行

$ php artisan migrate

为了确保迁移文件正确发布,请确保你已经将目录 database/migrations 添加到项目 composer.json 中的类映射。

使用方法

首先,将我们的 HasAddresses 特性添加到你的模型中。

<?php 
namespace App\Models;

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

class Post extends Model
{
    use HasAddresses;

    // ...
}
?>
向模型添加地址
$post = Post::find(1);
$post->addAddress([
    'street'     => '123 Example Drive',
    'city'       => 'Vienna',
    'post_code'  => '1110',
    'country'    => 'AT', // ISO-3166-2 or ISO-3166-3 country code
    'is_primary' => true, // optional flag
]);

或者你也可以这样做...

$address = [
    'street'     => '123 Example Drive',
    'city'       => 'Vienna',
    'post_code'  => '1110',
    'country'    => 'AT', // ISO-3166-2 or ISO-3166-3 country code
    'is_primary' => true, // optional flag
];
$post->addAddress($address);

可用的属性包括 streetstreet_extracitypost_codestatecountrystatenotes(内部使用)。你还可以使用自定义标志,如 is_primaryis_billingis_shipping。如果你已禁用内置的地理编码功能并想自己添加它们,也可以选择传递 lnglat

检查模型是否有地址
if ($post->hasAddresses()) {
    // Do something
}
获取模型的所有地址
$addresses = $post->addresses()->get();
获取主要/账单/发货地址
$address = $post->getPrimaryAddress();
$address = $post->getBillingAddress();
$address = $post->getShippingAddress();
更新模型的地址
$address = $post->addresses()->first(); // fetch the address

$post->updateAddress($address, $new_attributes);
从模型中删除地址
$address = $post->addresses()->first(); // fetch the address

$post->deleteAddress($address); // delete by passing it as argument
从模型中删除所有地址
$post->flushAddresses();

联系信息

首先,将我们的 HasContacts 特性添加到你的模型中。

<?php 
namespace App\Models;

use Chantouch\Addresses\Traits\HasContacts;
use Illuminate\Database\Eloquent\Model;

class Team extends Model
{
    use HasContacts;

    // ...
}
?>
向模型添加联系信息
$post = Team::find(1);
$post->addContact([
    'first_name' => 'Alex',
    'website'    => 'https://twitter.com/AMPoellmann',
    'is_primary' => true, // optional flag
]);

将地址与联系信息关联

最重要的是,addressescontacts 可以通过可选的一对多关系连接。这样,你可以将多个联系信息分配给一个地址,并像这样检索它们

use Chantouch\Addresses\Models\Address;

$address = Address::find(1);
$contacts = $address->contacts;

foreach ($contacts as $contact) {
    //
}
use Chantouch\Addresses\Models\Address;

$contact = Address::find(1)
                  ->contacts()
                  ->first();
use Chantouch\Addresses\Models\Contact;

$contact = Contact::find(1);

return $contact->address->getHtml();

许可

MIT 许可证 下许可。