我有2個模型,我想通過CVS導入填充。第一個模型是零售店列表,第二個模型是零售店對應的位置。CSV導入時的引用關係ID
這是CSV導入:
name,email,website,street_number,street_address,city,country,postcode,latitude,longitude
"Example name",[email protected],10,"random street",amsterdam,netherlands,4000,52.666,4.3333
的RetailStores.php
模型將需要這些值:
name,
email,
website
的LocationStores.php
模型將需要這些值:
street_number,
street_address,
city,
country,
postcode,
latitude,
longitude
我將解壓來自CSV文件的數據在之內循環並將它們附加到一個空數組變量,從這裏將使用一些Eloquent
來填充數據庫。下面是我如何做到這一點:
$file = Input::file('csv_file');
$data = $this->retailer->processCsv($file);
$retailers = [];
$locations = [];
foreach ($data as $value) {
$retailers[] = array(
'user_id' => Auth::user()->id,
'name' => $value['name'],
'email' => $value['email'],
'website' => $value['website'],
'created_at' => Carbon::now(),
'updated_at' => Carbon::now()
);
$locations[] = array(
'retailer_id' => $value['retailer_id'], // ISSUE HERE
'street_number' => $value['street_number'],
'street_address' => $value['street_address'],
'city' => $value['city'],
'state' => $value['state'],
'country' => $value['country'],
'country_code' => $value['country_code'],
'postcode' => $value['postcode'],
'latitude' => $value['latitude'],
'longitude' => $value['longitude'],
'created_at' => Carbon::now(),
'updated_at' => Carbon::now()
);
Retailer::insert($retailers);
Location::insert($locations);
}
正如上面提到我有2個獨立的車型零售商和位置。我需要參考$locations
陣列中的零售商ID。現在我有一個選項,讓用戶輸入CSV文件中每個位置的相關零售商商店標識,但人們都很好......你知道的。
但是考慮到CSV文件將提供一個「商店名稱」它具有每一個位置,有沒有引用一個增量ID在陣列中的每個獨特的商店名稱的方法嗎?例如,如果CSV表有這些值:
Fruit,[email protected],www.fruit.com,1,"apple street",etc
Fruit,[email protected],www.fruit.com,120,"pear parkway",etc
Fruit,[email protected],www.fruit.com,350,"orange avenue",etc
Meat,[email protected],www.meat.com,33,"Steak street",etc
Meat,[email protected],www.meat.com,33,"Chicken Road",etc
當的foreach循環中得到這些值,有沒有辦法可以用下面的增量ID爲每個因此這將引用的重複商店名稱相關商店到它的位置?
任何意見,非常感謝。