Day14 订单 -- 多项目结构

昨天看完基础结构後,有没有发现纪录购买商品的部份不是那麽范用,
包含数量、商品项目id、商品单价格等等,全部都纪录一个栏位,
不只搜寻不方便,统计也很麻烦,
所以我们可以多开一个专门纪录项目的table方便使用,

//先移除订单内容description
Schema::create('order', function (Blueprint $table) {
    $table->string('id', 30)->comment('订单id');
    $table->string('name', 30)->comment('购买人姓名');
    $table->integer('amount')->default(0)->comment('总金额');
    $table->string('status', 20)->default(‘unpaid’)->comment('订单状态');
    $table->primary(['id']);
});

//增加item table
Schema::create('order_item', function (Blueprint $table) {
    $table->string('id', 30);
    $table->string('order_id', 30)->comment('订单id');
    $table->string('name')->comment('商品名称');
    $table->string('product_id', 30)->comment('商品id');
    $table->longText('product')->comment('商品物件');
    $table->text('photo')->nullable()->comment('商品图片');
    $table->integer('quantity'); // 数量
    $table->integer('price')->default(0); // 单价
    $table->integer('amount')->default(0); // 总计
    $table->primary(['id']);
    $table->index(['id']);
    $table->index(['order_id']);
});

可以看到我们移除了原本order table的description栏位,
并且增加了order_item table纪录商品的各项资料,

order_item.id
这边一样要有一个流水号,不重复即可,基本上order_item的内容是尽量不去异动的,
包含删除,因此看要自己产或者用mysql的AUTO_INCREMENT都可以,
但是如果有要人工异动资料的部份,建议自己产生

order_item.order_id
订单号码,用於判断是属於哪笔订单的项目。

order_item.name、order_item.product_id
商品名称跟id这边做个纪录,方便filter、group等资料库操作。

order_item.product
商品物件这边直接储存商品购买当下所有资料,包含名称、图片、价格、规格等等,
类似於快照的功能,避免发生问题找不到商品购买当下的资料。

order_item.photo
商品图片这边是存成阵列,主要是可以做多装置多size,
也可以用单一图片或者图片id做图片关联。

其他价钱、数量相关的比较单纯,就直接略过不说明
要注意订单的属性是要纪录购买当下的情况,
所以如果只纪录商品id,然後要资料的时候在拉关联,
会发生购买当下跟看订单纪录金额不一样的问题,
这是很容易发生在刚入门的错误。

这边只是列出一个基础框架,如果有想增加的客制化栏位都可以增加,
例如订单备注、付款时间、建立时间之类的。

接下来会谈到简易的购物车结构,以及常用的购物车功能,
先来去吃烤肉了,明天见


<<:  Rust-流程控制-for

>>:  跨网域传值的神队友——window.postMessage

用 Python 畅玩 Line bot - 02:Line bot SDK

在建立好帐号之後,我们可以开始来看看 Line bot SDK,可以从 Line developer...

[DAY-09] 放宽更多限控制 决策不必上级核准

难道拉屎 也要跟我说!!! 不不讨公司 尽力去做对公司好的事!! 对自己负责! 对自己的 员工要做...

Powershell 入门之 可选参数和必选参数

前面我们给我们的脚本添加了参数,今天我们来看看,怎么定义这些参数,使其称为必选参数或可选参数。 我们...

数位转型

在疫情的情况之下,所有的节奏都被打乱了,在全球都在这样的情况之下,大家都在求新求变,不论是办公还是教...

AI ninja project [day 21] 自动编码器 Autoencoders

可以先看看Autoencoders的构造, 将原始的numpy array 或是tensor(可能是...