【发布时间】:2017-03-07 14:42:57
【问题描述】:
我需要创建一个导入方法来获取 CSV 文件并导入数据库中的所有内容。
我已经使用 Laravel 的一个 CSV 插件完成了解析,它完美地为我提供了一大组值设置为:
[
'col1_name' => 'col1 value',
'col2_name' => 'col2 value',
'col3_name' => 'col3 value,
'...' => '...'
]
这也是完美的,因为所有列名都适合我的模型,这使得数据库插入变得轻而易举。
但是 - 许多列值是我想设置为单独的表/关系的字符串。例如,一列包含项目制造商的名称,我在数据库中设置了制造商表。
我的问题是 - 浏览导入的 CSV 并将字符串与关系表中的相应 ID 交换以使其与我的数据库设计兼容的简单方法是什么?
可以使导入的行:
[
'manufacturer' => 'Dell',
]
进入:
[
'manufacturer' => '32',
]
我知道我可以做一个 foreach 循环,将所需值与关系模型中的值进行比较,但我确信有一种更简单、更干净的方法。
【问题讨论】:
-
您能展示一下您是如何插入数据的吗?
-
我没有插入任何 atm - 需要先交换数据。基本上,因为我得到了一个数组中的 CSV,它对应于我的项目数据库设计,我将通过 Item::insert($data) 进行批量/块插入。我最大的 CSV 包含 4000 行和 20-30 列,其中大部分将是交换后的 FK ID
标签: php csv laravel-5 laravel-5.3