具有价格层的Laravel逻辑

时间:2016-12-12 17:40:57

标签: php mysql laravel laravel-5 eloquent

我想知道是否有人可以指出我正确的方向。

我有一个建立在Laravel上的电子商务平台,是一种享受!但是我现在想介绍某些产品的价格等级。

例如,我有一件售价10.00英镑的商品。

我想为此商品引入多个定价等级

  • 1&之间的顺序10 =单价为10.00英镑
  • 订购11& 15 =单价为£8.00
  • 订单超过16+ =单价为£6.00

我想到了我会在我的产品表中创建两个额外的表,称为层。

1是包含

的Product_tiers
  • product_id
  • tier_id

另一个表层

  • ID
  • Tier Name
  • percentage_drop
  • less_than_quantity

我的问题是在控制器中持有订单到平台时如何锻炼订单输入的数量是否在上述某个层之内?

有人能指出我正确的方向,所以我可以研究吗?谷歌没有帮助

1 个答案:

答案 0 :(得分:3)

关系是正确的,唯一的问题在于less_than_quantity字段。首选min_quantitymax_quantity可以更轻松地进行合适的层搜索。

所以,你的最终表是

product
 - id
 - name
 - price
 - blah blah...

tier
 - id
 - name
 - percentage_drop
 - min_quantity
 - max_quantity

product_tier
  - id
  - product_id
  - tier_id

然后你可以这样使用它

public function getProductTier($productId)
{
  $quantity = request()->get('quantity');

  $product = Product::find($id);
  $tiers = $product->tiers;

  $tier = $tiers->filter(function($tier) use ($quantity) {
    $quantity >= $tier->min_quantity && $quantity < $max_quantity;
  })->first();

  $final_rate = ($product->price - (($tier->drop_percentage/100) * $product->price));
}