我正在使用 laravel 4 构建一个电子商务应用程序 我迷失了管理税收和期权的正确方法。 这是我在数据库中所做的:
products table: id,name,price,id_taxe
Got a tax table : id,name,rate
使用 Laravel 模型来管理它非常简单
但是麻烦来自于那部分:
产品必须有一个具有自己的价格和税率的选项(与产品不同),选项有最小和最大数量,具体取决于所选的产品。
示例
如果我购买了产品 1(100 美元),选项 1 需要至少 1 数量(最少)最多 10 个产品(最多),如果我购买 11 x 产品 1,选项 1 需要至少 2 数量。
如果我购买了产品 2(200 美元),则需要选择 1 至少 1 种产品,最多 5 种产品。
我不知道如何以正确的方式管理这个问题。
我应该在产品表中创建类似产品的选项吗? 如何使用 Laravel 关系将产品与选项(包括最小和最大约束)链接起来。
感谢您的帮助。
最佳答案
好吧,我试试。
根据您的评论,最好的方法似乎是通过数据透视表链接选项,此外,在此数据透视表中应该有一个数字,指示您每购买 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
关于mysql - 所需产品选项 laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27312226/