我将使用Maatwebsite软件包将大量Excel电子表格导入Laravel项目。该软件包将每个电子表格中的数据作为" Row Collection"它扩展了Illuminate Collection(但不扩展Eloquent Collection或Model)。然后,我想使用模型将行保存到表中。
有些电子表格会有given_nm和family_nm列(请注意' name'的缩写),有些会有first_name和last_name,还有两三种其他变体(都是预先知道的)。大多数电子表格都有多行,大多数行不到一百行,但有些行可能有几千行。
所有行都需要以given_name和family_name的形式在数据库中结束。所以我想重命名列'given_nm'和' first_name'到' given_name',以及列#family; nm'和' last_name'在将集合插入数据库之前,先将“family_name'等”添加到其中。
所以...有没有什么干净的方法可以在一个动作中改变整个系列?或者我是否需要遍历集合中的每个记录,在每一行上执行combine()以重命名列?
感谢。
PS - 我目前正在使用Laravel 5.1,但如果有帮助的话,很乐意升级到5.4(甚至可以升级到5.5)。
答案 0 :(得分:1)
我认为你必须循环浏览它,添加你想要的列,并删除那些你不想要的列。
$collection = $collection->each(function($item, $key){
$item->given_name = $item->given_nm;
});
//when you are done, delete the unwanted columns
$collection->forget('given_nm');