hypermetrica/laravel-sku
为 Eloquent 模型生成 SKU
dev-master
2021-01-23 19:01 UTC
Requires
- php: ^7.2|^8.0
- illuminate/support: ~5.6|^6.0|^7.0|^8.0
Requires (Dev)
- orchestra/testbench: ^3.6|^4.0|^5.0|^6.0
- phpunit/phpunit: ^7.0|^8.2|^9.0
This package is auto-updated.
Last update: 2024-09-24 02:59:32 UTC
README
在保存任何 Eloquent 模型时生成唯一的 SKU,支持 Laravel 5.6、Laravel 6 及以上版本。
$model = new EloquentModel();
$model->name = 'Laravel is Awesome';
$model->save();
echo $model->sku; // ouputs "LAR-80564492"
该包将向 Laravel 的 Illuminate\Support\Str::sku()
类添加一个新方法来为您生成 SKU。
安装
您可以通过 composer 安装此包
composer require hypermetrica/laravel-sku
服务提供器将自动注册自身。
您可以使用以下命令发布配置文件:
php artisan vendor:publish --provider="Hypermetrica\Sku\SkuServiceProvider" --tag="config"
以下是要发布的配置文件内容,将发布在 config/laravel-sku.php
中
return [
/*
|--------------------------------------------------------------------------
| SKU settings
|--------------------------------------------------------------------------
|
| Set up your SKU
|
*/
'default' => [
/*
* SKU is based on a specific field of a model
* You can use a single field or an array of fields
*/
'source' => 'name',
/*
* Destination model field name
*
*/
'field' => 'sku',
/*
* SKU separator
*
*/
'separator' => '-',
/*
* Shall SKUs be enforced to be unique
*
*/
'unique' => true,
/*
* Shall SKUs be generated on create
*
*/
'generate_on_create' => true,
/*
* Shall SKUs be re-generated on update
*
*/
'generate_on_update' => true,
],
/*
|--------------------------------------------------------------------------
| SKU Generator
|--------------------------------------------------------------------------
|
| Define your own generator if needed.
|
*/
'generator' => \Hypermetrica\Sku\Concerns\SkuGenerator::class,
];
请注意,上述设置假定您在模型中有一个 sku
字段。如果您计划手动覆盖值,请确保将其添加到 fillable
数组中;
用法
将 Hypermetrica\Sku\HasSku
特性添加到您的模型中。这就完成了!
namespace App;
use Hypermetrica\Sku\HasSku;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use HasSku;
}
幕后,这将注册一个观察者以处理 sku
字段,每次保存模型时都会生成该字段。
高级用法
如果您想更改特定模型的设置,您可以重载 skuOptions
() 方法
namespace App;
use Hypermetrica\Sku\HasSku;
use Hypermetrica\Sku\Concerns\SkuOptions;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use HasSku;
/**
* Get the options for generating the Sku.
*
* @return Hypermetrica\Sku\SkuOptions
*/
public function skuOptions() : SkuOptions
{
return SkuOptions::make()
->from(['label', 'another_field'])
->target('arbitrary_sku_field_name')
->using('_')
->forceUnique(false)
->generateOnCreate(true)
->refreshOnUpdate(false);
}
}
关于 SKU
库存单位 允许您设置一个唯一的标识符或代码,该代码引用特定的库存单位。
变更日志
有关最近更改的更多信息,请参阅 变更日志。
测试
composer test
安全
如果您发现任何安全相关的问题,请通过电子邮件 cyrill.kalita@gmail.com 反馈,而不是使用问题跟踪器。