【问题标题】:Laravel Logic with Price TiersLaravel 逻辑与价格层
【发布时间】:2016-12-12 17:40:56
【问题描述】:

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

我有一个基于 Laravel 构建的电子商务平台,非常棒!不过,我现在想介绍某些产品的价格等级。

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

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

  • 1 到 10 之间的订单 = 单价为 10.00 英镑
  • 11 和 15 之间的订单 = 单价为 8.00 英镑
  • 16 岁以上订购 = 单价为 6.00 英镑

我的想法是,我会为我的产品表创建两个额外的表,称为层。

1 是 Product_tiers 包含

  • product_id
  • tier_id

另一个表层

  • 身份证
  • 层名称
  • percentage_drop
  • less_than_quantity

我的问题是在控制器中,当将订单持久化到平台时,我将如何确定输入订单的数量是否在上述层级之一内?

谁能指出我正确的方向以便我进行研究?谷歌没有帮助

【问题讨论】:

    标签: php mysql laravel laravel-5 eloquent


    【解决方案1】:

    关系是正确的,唯一的问题在于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));
    }
    

    【讨论】:

    • 谢谢你,关于最大和最小数量的好提示!过滤层的功能看起来可以完成这项工作..我会再研究一点然后标记这个答案..谢谢你的回复!
    • @Dev.Wol 如果您遇到任何问题,请告诉我。很高兴我能帮上忙:)
    • 我已经尝试了上述方法,但不幸的是它过滤掉了我所有的层,导致在尝试获得最终费率时找不到对象。我已经 dd() $product->tiers 和我可以看到三层,我传递给过滤器的数量是 1。
    • 已修复!阅读 laravel 文档后,我所要做的就是在函数中添加 return。
    • @Dev.Wol 返回?在哪里?我给出的代码显然是一个伪代码。您必须根据自己的需要进行更改。希望我的回答对你有帮助:)
    猜你喜欢
    • 1970-01-01
    • 2017-08-08
    • 2018-04-17
    • 2021-12-17
    • 2019-07-25
    • 2016-08-12
    • 2014-09-04
    • 2012-03-14
    • 1970-01-01
    相关资源
    最近更新 更多