在 laravel 中导入 CSV 文件
Import CSV file in laravel
我正在使用 maatwebsite/excel
,我有 CSV 文件,其中包括 1449
行,其中每行有 value
和 parent title
。 (这里是它的样本)
我想要的是从另一个 table 获取 parents
的 id
并使用这些 ID 而不是标题(我的 csv 中有)
代码
import function
public function importsku(Request $request) {
Excel::load($request->file('file'), function($reader) {
$results = $reader->all();
foreach($results as $row){
$findermap = new FinderMap;
$findermap->ymm_value_id = $row->ymm_value_id;
$findermap->sku = $row->sku;
$findermap->save();
}
Session::flash('success', 'Your Data imported successfully.');
return redirect()->route('finders.index');
});
}
更多信息
我要获取其 id's
的 parents 名称存储在名为 finder_ymm_values 的 table 中他们的 dropdown_id 是 4
我认为这将有助于我们限制搜索并更快地获得结果
问题
为了搜索我的 parents 名称并获取我拥有的每个值的 ID,我应该向我的导入函数添加什么?
更新
我在导入函数中添加了下面的代码,现在它确实获得了我正在寻找的 ID,但问题是它在 collection.
中获得了它们
code i added
foreach($results as $row){
//added
$vals = FinderYmmValue::where('title', $row->ymm_value_id)->where('dropdown_id', '4')->pluck('id');
$findermap = new FinderMap;
$findermap->ymm_value_id = $vals; //changed
$findermap->sku = $row->sku;
$findermap->save();
}
error i get
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or
update a child row: a foreign key constraint fails .......... insert
into finder_maps
(ymm_value_id
, sku
, updated_at
, created_at
)
values ([303], L0R88AA, 2018-06-14 10:41:51, 2018-06-14 10:41:51))
正如你在我错误的最后一行看到的那样,我得到了我的 id [303]
有什么想法吗?
已解决
这里是我所做的最后更改并成功导入了我的文件。
foreach($results as $row){
$vals = FinderYmmValue::where('title', $row->ymm_value_id)->where('dropdown_id', '4')->pluck('id');
foreach ($vals as $val) {
$valid = $val;
}
$findermap = new FinderMap;
$findermap->ymm_value_id = $valid;
$findermap->sku = $row->sku;
$findermap->save();
}
希望能帮到别人。
我正在使用 maatwebsite/excel
,我有 CSV 文件,其中包括 1449
行,其中每行有 value
和 parent title
。 (这里是它的样本)
我想要的是从另一个 table 获取 parents
的 id
并使用这些 ID 而不是标题(我的 csv 中有)
代码
import function
public function importsku(Request $request) {
Excel::load($request->file('file'), function($reader) {
$results = $reader->all();
foreach($results as $row){
$findermap = new FinderMap;
$findermap->ymm_value_id = $row->ymm_value_id;
$findermap->sku = $row->sku;
$findermap->save();
}
Session::flash('success', 'Your Data imported successfully.');
return redirect()->route('finders.index');
});
}
更多信息
我要获取其 id's
的 parents 名称存储在名为 finder_ymm_values 的 table 中他们的 dropdown_id 是 4
我认为这将有助于我们限制搜索并更快地获得结果
问题
为了搜索我的 parents 名称并获取我拥有的每个值的 ID,我应该向我的导入函数添加什么?
更新
我在导入函数中添加了下面的代码,现在它确实获得了我正在寻找的 ID,但问题是它在 collection.
中获得了它们code i added
foreach($results as $row){
//added
$vals = FinderYmmValue::where('title', $row->ymm_value_id)->where('dropdown_id', '4')->pluck('id');
$findermap = new FinderMap;
$findermap->ymm_value_id = $vals; //changed
$findermap->sku = $row->sku;
$findermap->save();
}
error i get
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails .......... insert into
finder_maps
(ymm_value_id
,sku
,updated_at
,created_at
) values ([303], L0R88AA, 2018-06-14 10:41:51, 2018-06-14 10:41:51))
正如你在我错误的最后一行看到的那样,我得到了我的 id [303]
有什么想法吗?
已解决
这里是我所做的最后更改并成功导入了我的文件。
foreach($results as $row){
$vals = FinderYmmValue::where('title', $row->ymm_value_id)->where('dropdown_id', '4')->pluck('id');
foreach ($vals as $val) {
$valid = $val;
}
$findermap = new FinderMap;
$findermap->ymm_value_id = $valid;
$findermap->sku = $row->sku;
$findermap->save();
}
希望能帮到别人。