【发布时间】:2013-08-20 09:44:43
【问题描述】:
我使用 Laravel 4 开发了一个电子商务应用程序,需要一个建议来解决我的数据库设计问题。
问题:
我的客户的产品有多种变体/选项。例如:
Product1 = Apple Iphone 5
颜色选项:黑色
-
黑色选项 1:16GB
选项 1 的库存:15
选项 1 的售价:900 美元
-
黑色选项 2:32GB
选项 2 的库存:32
选项 2 的售价:1.200 美元
-
黑色选项 3:128GB
选项 3 的库存:24
选项 3 的售价:1.700 美元
颜色选项:白色
-
白色选项 1:32GB
选项 1 的库存:9
选项 1 的售价:930 美元
-
选项 2 白色:64GB
选项 2 的库存:12
选项 2 的售价:1.270 美元
Product2 = 摩托罗拉 Xoom 9868AB 机箱
材质选择:皮革
-
皮革选项1:灰色
选项 1 的库存:90
选项 1 的售价:12 美元
-
皮革选项2:粉红色
选项 2 的库存:12
选项 2 的售价:12.70 美元
材质选项:硬壳
-
硬壳选项1:黑色
选项 1 的库存:51
选项 1 的售价:32.90 美元
我的方法:
正如您在上面看到的,有许多产品具有不同类型的期权、股票、价格。我已经尝试过使用 belongsToMany() 类似的方法:
表格:产品
id
name
created_at
updated_at
表格:变体
id
title
parent
created_at
updated_at
表格:product_variation
id
products_id
variations_id
stock
purchase_price
sales_price
created_at
updated_at
产品模型:
<?php
class Products extends Eloquent {
protected $table = 'products';
protected $fillable = array('name');
public function variations() {
return $this->belongsToMany('Variations','product_variation')
->withPivot('purchase_price', 'stock', 'sales_price')
->withTimestamps();
}
}
订单模型应该如何?订单将 hasMany() 产品和变体。你会如何解决这个问题?
【问题讨论】:
-
为什么不将每个产品变体都作为自己的产品?即产品 1 是 Iphone5 白色,产品 2 是 Iphone 黑色等
-
这真的是非常老式的方式。因为这家店真的很难管理。无论是前端还是后端。让我们想象一下,作为一家 T 恤店,您是一位想购买黑色和 XL 码的阿迪达斯 345 衬衫的客户。导航,寻找产品就像一场噩梦......
-
Thaks 这对这个问题非常有用。仍在寻找您建议的雄辩关系。
-
顺便说一句,在您的结构中,变体没有自己的库存和价格。
标签: database-design orm laravel eloquent has-and-belongs-to-many