Skip to content

电商核心概念

InnoShop 中有五个核心数据模型:分类、品牌、规格、选项、属性。理解它们之间的区别和用途,是进行二次开发的基础。

概念对比总结

概念用途影响价格影响库存关联方式
分类组织产品结构多对多 (product_categories)
品牌标识制造商一对多 (brand_id)
规格产品变体 SKU一对多 (product_skus)
选项增值服务多对多 (product_options)
属性产品参数展示多对多 (product_attributes)

1. 分类 (Category)

按层级组织产品,便于用户导航和筛选。

电子产品
  └── 手机
       └── 智能手机

特点:树形层级结构(parent_id)、一个产品可属于多个分类、支持 SEO 和多语言。

数据库表categories(主表)、category_translations(翻译表)、product_categories(关联表)

代码位置innopacks/common/src/Models/Category.phpRepositories/CategoryRepo.php

php
$category->children();        // 获取子分类
$category->activeChildren();  // 获取启用的子分类
$category->parent();          // 获取父分类
$category->products();        // 获取分类下的产品

2. 品牌 (Brand)

标识产品的制造商或品牌商,便于用户按品牌筛选。

特点:通过 brand_id 外键直接关联产品、支持品牌 Logo、支持首字母筛选。

数据库表brands(主表,无需翻译表)

代码位置innopacks/common/src/Models/Brand.phpRepositories/BrandRepo.php

php
$brand->products();
BrandRepo::getInstance()->autocomplete($keyword);

3. 规格 (Specification/Variant)

定义产品的不同版本/SKU,每个规格组合对应一个独立的库存单位。

规格组合SKU 编码价格库存
红色 - 大号SKU-001¥9950
红色 - 中号SKU-002¥8930

特点:独立 SKU、独立定价和库存、规格数据以 JSON 格式存储在 products.variables 字段。

产品 variables 字段示例

json
{
  "color": {
    "name": {"en": "Color", "zh-cn": "颜色"},
    "values": {
      "red": {"name": {"en": "Red", "zh-cn": "红色"}},
      "blue": {"name": {"en": "Blue", "zh-cn": "蓝色"}}
    }
  }
}

数据库表products.variables(JSON 字段定义规格)、product_skus(SKU 表)

代码位置Models/Product.phpModels/Product/Sku.phpRepositories/Product/SkuRepo.php

php
$product->skus();          // 所有 SKU
$product->masterSku();     // 主 SKU
$product->isMultiple();    // 是否多规格
$product->variables;       // 规格变量定义

4. 选项 (Option)

购物时可选择的增值服务或附加选项,是产品的补充服务。

选项名称可选值价格影响
礼品包装普通包装 / 精美礼盒+¥10
延保服务1年保修 / 2年延保+¥99

特点:增值服务(非产品变体)、可影响价格、支持必选/可选、多语言 JSON 存储。

数据库表optionsoption_valuesproduct_optionsproduct_option_values

代码位置Models/Option.phpModels/OptionValue.phpRepositories/OptionRepo.php

php
$product->options();           // 产品的选项
$product->productOptions();    // 选项配置
$option->values();             // 选项的值

5. 属性 (Attribute)

描述产品的规格参数和技术指标,用于产品详情页展示和分类页筛选。

属性名属性值
材质纯棉
重量500g

特点:产品参数展示、筛选功能、分组管理。筛选逻辑:不同属性组之间是 AND 关系,同一组内多个值是 OR 关系。

筛选 URL 格式attr=1:10,11|2:20 表示 (属性1=值10 OR 值11) AND (属性2=值20)

数据库表attributesattribute_translationsattribute_groupsattribute_valuesproduct_attributes

代码位置Models/Attribute.phpModels/Attribute/Group.phpRepositories/AttributeRepo.php

php
$product->productAttributes();    // 产品属性
$product->groupedAttributes();    // 按分组的属性
$attribute->group();              // 属性组
$attribute->values();             // 属性值

帆连科技 · 基于 OSL 3.0 许可发布