【问题标题】:Laravel - DB structure change - Is this a good practice or not?Laravel - 数据库结构更改 - 这是一个好习惯吗?
【发布时间】:2020-11-07 11:23:49
【问题描述】:

你好,你好吗?我想问一下比我更有经验的你,我想在 Laravel 中做的是好的还是坏的做法。

我正在制作一个订购应用程序,并且在我的数据库中,我有一个产品有一个特定的价格(产品表中的另一个字段)。但是后来我意识到,当产品的价格某一天发生变化时,旧订单中的价格也会发生变化,即旧订单会采用产品此时此刻的新价格,而不是下单的日期。被放置,从而产生信息问题。

为此,我决定创建一个包含临时价格的新表,也就是说,如果价格发生变化,则在数据库中创建一个新行,其中包含某个日期的价格,但它的价格在另一个被记录。日期。

现在,我的问题是……如何在没有用户干预的情况下将产品的当前价格带到我正在创建的新表中……也就是说,将每种产品的所有价格迁移到新表桌子。 我的想法是创建一个遍历每个产品的函数,并在价格表中创建一个新行,其中包含产品 ID、价格和当前日期。创建此函数后,通过 Tinker 运行它,用户不会注意到什么,但系统采用了新的价格结构。

这样好吗? 这是一个好的做法还是有更好的方法?

谢谢。

【问题讨论】:

    标签: php mysql database laravel tinker


    【解决方案1】:

    欢迎来到 SO!这是一种可能的方法来获得包含价格历史记录的表格。有效期的开始和结束日期。为了不使向用户显示他的订单历史的查询过于复杂,我建议您也将产品的价格保存在订单中。例如在订单和产品的多对多映射表中,您还可以保存购买的产品数量。

    您可以创建一个 CLI 命令(例如php artisan make:command InsertOrderPrices),然后在创建旧订单后填写这些字段。

    【讨论】:

    • 太棒了!我会尝试你的建议,非常感谢马克西,问候。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    相关资源
    最近更新 更多