Flexible variant product type for Bagisto with option-based variant generation.
{
"repositories": [
{
"type": "path",
"url": "packages/Longyi/Core"
}
],
"require": {
"longyi/core": "*"
},
"autoload": {
"psr-4": {
"Longyi\\Core\\": "packages/Longyi/Core/src/"
}
}
}
composer dump-autoload
php artisan migrate
# Publish config
php artisan vendor:publish --tag=longyi-config
# Publish views
php artisan vendor:publish --tag=longyi-views
# Publish translations
php artisan vendor:publish --tag=longyi-lang
Optimized indexes for all critical queries:
use Longyi\Core\Models\ProductOption;
// Create a color option
$colorOption = ProductOption::create([
'type' => 'color',
'code' => 'color',
'label' => '颜色',
]);
// Add color values
$colorOption->values()->create([
'code' => 'red',
'label' => '红色',
'position' => 0,
'meta' => ['color_code' => '#FF0000'],
]);
$product->options()->attach($colorOption->id, [
'position' => 0,
'is_required' => true,
'meta' => ['show_swatch' => true],
]);
use Longyi\Core\Models\ProductVariant;
$variant = ProductVariant::create([
'product_id' => $product->id,
'sku' => 'TSHIRT-RED-M',
'name' => 'T-Shirt Red Medium',
'price' => 99.99,
'compare_price' => 149.99,
'quantity' => 100,
'status' => true,
]);
// Link to option values
$variant->optionValues()->attach([$redValue->id, $mediumValue->id]);
$saleableVariants = ProductVariant::where('product_id', 1)
->where('status', true)
->where('quantity', '>', 0)
->with('optionValues')
->orderBy('sort_order')
->get();
All cascade operations handled via model events:
MIT License
For issues and questions, please open an issue on GitHub.