【问题标题】:How can I rename selected fields in a Laravel collection?如何重命名 Laravel 集合中的选定字段?
【发布时间】:2017-03-14 06:43:13
【问题描述】:

我将使用 Maatwebsite 包将一些 Excel 电子表格导入到 Laravel 项目中。该包将每个电子表格中的数据作为“Row Collection”提供给我,它扩展了Illuminate Collection(但扩展了Eloquent CollectionModel)。然后我想使用模型将行保存到表中。

有些电子表格将包含 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)。

【问题讨论】:

    标签: php laravel collections


    【解决方案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');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-11
      • 2021-04-09
      • 2017-12-08
      • 1970-01-01
      • 2019-11-22
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      相关资源
      最近更新 更多