我知道很多方法可以避免重复PHP代码(在我的例子中是PHP)。但是,我正在开发一个相当大的应用程序,它使用它找到的数据对数据库进行一些计算,我注意到需要在其他地方使用相同的代码(SQL的一部分)。
我不喜欢一遍又一遍地复制和粘贴同一件事的想法。有什么好办法呢?我应该使用存储过程吗?我几乎可以计算PHP中的一些东西,除了大多数时候查询基于查询未返回的数据计算值,并且将额外数据返回给PHP以使其可以计算它似乎很愚蠢。有时这可能没问题,但现在感觉不是这样。
我该怎么办?
例如,在我计算的许多SQL查询中都是这样的:
...
(SELECT SUM(amount) FROM IT INNER JOIN Invoice I WHERE IT.invoiceId=I.id) AS total
...
FROM InvoiceTransaction IT
...
请注意,我现在在家,所以我把它写在了我的头顶。
答案 0 :(得分:2)
我认为你有两个解决方案:
我不一定会回避存储过程。但我会建议保持业务逻辑不存在(保留在应用程序本身中),并确保你有足够的单元测试。
答案 1 :(得分:1)
我不喜欢存储过程,尤其不是为了重构。您应该考虑编写一个返回所需记录的函数,并将SQL查询放在该函数中,这样您就可以调用它而不是将SQL放在任何地方。
答案 2 :(得分:1)
我认为我们需要一个查询示例。存储过程可能是一个不错的选择。或者替代方案可能是使用视图。在视图或存储过程中进行查询的一个优点是,您可以经常使用数据库来查看表的使用位置。缺点是您将自己锁定在一个数据库中,但无论如何您可能正在这样做。