我正在用laravel 4构建一个电子商务应用程序 我迷失了管理税收和选择的正确方法。 这是我在数据库中所做的:
products table: id,name,price,id_taxe
Got a tax table : id,name,rate
使用laravel模型管理它非常简单
但麻烦来自那部分:
产品必须有自己的价格和税率的选项(与产品不同),期权的最小和最大数量取决于产品的选择。
实施例
如果我购买产品1(100美元),则选项1至少需要1个数量(分钟),最多10个产品(最大),如果我购买11个产品1,则选项1至少需要2个数量。< / p>
如果我购买了产品2(200美元),则选项1至少需要1个数量,最多5个产品。
我不知道如何以正确的方式管理它。
我应该像产品表中的产品一样创建选项吗? 如何使用laravel关系将产品与选项(包括最小和最大约束)相关联。
感谢您的帮助。
答案 0 :(得分:0)
根据您的评论,最好的方法似乎是通过数据透视表链接选项,此数据透视表中的数字也应该是指示您为每x订购的产品数量收到多少这些选项的数字。
迁移:
Schema::create('product_options', function(Blueprint $table){
$table->integer('product_id')->unsigned();
$table->integer('option_id')->unsigned();
$table->integer('per_x_products');
$table->foreign('product_id')
->references('id')->on('products')
->onDelete('cascade')
->onUpdate('cascade');
$table->foreign('option_id')
->references('id')->on('options')
->onDelete('cascade')
->onUpdate('cascade');
}
产品表中的关系:
public function options(){
return $this->belongsToMany('Option', 'product_options','product_id','option_id')
->withPivot(['per_x_products']);
}
订购产品后,您将获得产品ID和订购金额。您现在可以获得产品,相关选项以及选项增量的订购产品数量。
$product = Product::find($id);
foreach($product->options as $option){
$perXProducts = $option->pivot->per_x_products
$minusThis = $amountOrdered % $perXProducts;
$amountOfOptions = ($amountOrdered - $minusThis) / $perXProducts;
$optionAmountsById[$option->id] = $amountOfOptions;
}
你可以试试上面的内容,看看你能走多远,这是我的首要考虑因素,所以可能会有一些错误。另外看看这里:
http://laravel.com/docs/4.2/eloquent#working-with-pivot-tables