所需产品选项laravel

时间:2014-12-05 09:03:58

标签: mysql laravel laravel-4 e-commerce relationships

我正在用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关系将产品与选项(包括最小和最大约束)相关联。

感谢您的帮助。

1 个答案:

答案 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