chantouch / laravel-addresses
为 Laravel 提供简单地址和联系管理。
2.0.0
2024-05-06 07:06 UTC
Requires
- php: ^8.0|^8.1|^8.2|^8.3
- illuminate/database: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
- webpatser/laravel-uuid: ^4.0
Requires (Dev)
- doctrine/dbal: ^3.3|^4.0
- mockery/mockery: ^1.5
- orchestra/testbench: ^7.2|^8.0|^9.0
- phpunit/phpunit: ^10.0|^11.0
README
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);
可用的属性包括 street
、street_extra
、city
、post_code
、state
、country
、state
、notes
(内部使用)。你还可以使用自定义标志,如 is_primary
、is_billing
和 is_shipping
。如果你已禁用内置的地理编码功能并想自己添加它们,也可以选择传递 lng
和 lat
。
检查模型是否有地址
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 ]);
将地址与联系信息关联
最重要的是,addresses
和 contacts
可以通过可选的一对多关系连接。这样,你可以将多个联系信息分配给一个地址,并像这样检索它们
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 许可证 下许可。