2017-03-14 34 views
0

我打算使用Maatwebsite包將許多Excel電子表格導入Laravel項目。該軟件包將來自每個電子表格的數據以「Row Collection」的形式提供給我,它擴展了Illuminate Collection(但是而不是擴展了Eloquent CollectionModel)。然後我想使用模型將行保存到表中。一些電子表格將有列given_nm和family_nm(注意'name'上的縮寫),一些將具有first_name和last_name,並且有兩個或三個其他變體(全部事先已知)。大多數電子表格將有多行,大多數行將少於一百行,但有些行可能有幾千行。如何重命名Laravel集合中的選定字段?

這些行都需要以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

我想你將不得不循環它,添加你想要的列,並刪除你不需要的列。

$collection = $collection->each(function($item, $key){ 
    $item->given_name = $item->given_nm; 
}); 

//when you are done, delete the unwanted columns 
$collection->forget('given_nm');