chuckcms / laravel-addresses
ChuckCMS存储地址的模块。
v0.1.1
2022-06-11 14:26 UTC
Requires
- php: ^7.2.5|^8.0
- illuminate/auth: ^6.0|^7.0|^8.0|^9.0
- illuminate/container: ^6.0|^7.0|^8.0|^9.0
- illuminate/contracts: ^6.0|^7.0|^8.0|^9.0
- illuminate/database: ^6.0|^7.0|^8.0|^9.0
README
在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 在安特卫普编写。