1. Go to this page and download the library: Download binary-cats/laravel-sku library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
binary-cats / laravel-sku example snippets
$model = new EloquentModel();
$model->name = 'Laravel is Awesome';
$model->save();
echo $model->sku; // ouputs "LAR-80564492"
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' => \BinaryCats\Sku\Concerns\SkuGenerator::class,
];
namespace App;
use BinaryCats\Sku\HasSku;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use HasSku;
}
namespace App;
use BinaryCats\Sku\HasSku;
use BinaryCats\Sku\Concerns\SkuOptions;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use HasSku;
/**
* Get the options for generating the Sku.
*
* @return BinaryCats\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);
}
}
namespace App\Components\SkuGenerator;
use BinaryCats\Sku\Concerns\SkuGenerator;
class CustomSkuGenerator extends SkuGenerator
{
/**
* Get the source fields for the SKU.
*
* @return string
*/
protected function getSourceString(): string
{
// fetch the source fields
$source = $this->options->source;
// Fetch fields from model, skip empty
$fields = array_filter($this->model->only($source));
// Fetch fields from the model, if empty, use custom logic to resolve
if (empty($fields)) {
return 'some-random-value-logic';
}
// Impode with a separator
return implode($this->options->separator, $fields);
}
}