Laravel 5.4 - 将Excel数据保存到MySQL中动态创建的列中

时间:2018-01-31 14:52:08

标签: laravel maatwebsite-excel

我有一个内部网页,可以从excel中搜索数据,并从第三方excel导出文件中读取数据。该网页允许上传多个excel文件,其中数据被读取并存储在MySQL数据库中。

我们希望更新应用程序以保留上传数据的历史记录(它是具有月度值的数据),以便我们可以轻松地从上传的数据中搜索,过滤和生成图表。

所以我使用Laravel 5.4并使用maatwebsite\excel导入和解析excel文件。 Excel文件始终由以下列(Dummy File

组成

| Item group | item # | item name | Item Currency | <month> <year> |

Item Currency之后,当前月份的过去3年数据总共有36列,因此列的名称将为dec 2017

现在我在Laravel中为名为Item的项目创建了一个模型,并为名为ItemMonthly的每月值创建了一个模型

现在我能够在数据库中动态读取文件并创建列,但我觉得这非常难看并且根本没有效率:

(Gist) Code for Models and Excel Function

最大问题

因为我需要阅读所有月度数据,因为我需要按照月份的顺序,所以我不能真正重命名所有列。据我所知。我需要能够在Highchart图表和Datatable中获取要渲染的所有列。有些项目没有相同的月度数据(例如,有些项目仅以2015年为例。

需要建议

我在这里阅读了几个解决方案,其中一些解决方案说,不是在MySQL中创建列,而是将月度数据存储为单个列中的json对象。

关于从MySQL更改为MongoDB的完全建议的一些答案

我有点不知道为此找到最好的方法,并且真诚地想知道MySQL是否是正确的方法。到目前为止,我一直在尝试的解决方案似乎都涉及非常黑客的方法。

如果需要更多信息,请告诉我们。我不想写一个巨大的文本墙,但我也想提供正确的信息量。

非常感谢!

0 个答案:

没有答案