gpt4 book ai didi

php - 在 Laravel-4 中批量插入具有关系的对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:47:49 30 4
gpt4 key购买 nike

我遇到了这样一种情况,我需要在 laravel 4 中批量保存对象及其相关对象。本质上,我正在做的是批量插入对象,其中每个对象可以有很多标签(多对多)关系)。

这是一些示例代码,请注意 TODO 注释:

 [...]

$batchData = array();
$rowCount = 0;
foreach ($dataArray as $key => $row) {

[...]

// parsing row from CSV
$obj = array();
foreach ($row as $attribute => $value) {
$obj['template_id'] = $templateId;
$obj['batch_id'] = $batchId;
$obj['user_id'] = $confideUserId;
$obj['created_at'] = new \DateTime;
$obj['updated_at'] = new \DateTime;
// Attach Tags if any exist
if ($attribute === 'tags') {
if (!is_null($value) || !is_empty($value)) {
$tags = explode(":", $value);
// TODO: Get tag ID for each tag and add to $obj['tags'] array
}
}
}

// add object to array
$batchData[$rowCount] = $obj;
++$rowCount;

if ($rowCount == \Config::get('app.maxCSV')) {
try {
// TODO: Batch Insert With Related tags??
$obj_model_name::insert($batchData);
} catch (Exception $e) {
return false;
}
$rowCount = 0;
$batchData = array();

}
}

[...]

我可以一个一个地插入每个对象及其关系,但问题是我们通过 CSV 批量插入这些对象,我们可以在任何地方拥有数百到数十万个对象。

有人有什么建议吗?

仅供引用,所使用的数据库是 MSSQL 2012。

干杯,

最佳答案

在进一步研究之后,我得出的结论是最好重构我的逻辑。我现在分别保存每个对象,然后再将标签分配给该对象并重复所有对象。

当有很多对象时,这可能效率不高,但到目前为止,这不是一个可预见的问题。

关于php - 在 Laravel-4 中批量插入具有关系的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20553669/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com