Я хочу импортировать элементы из моего CSV-файла в базу данных MSSQL с помощью Laravel 5.7.В моем CSV-файле первый столбец - item_ids, а второй - описание.Как теперь настроить, чтобы не загружать те элементы, идентификаторы которых уже есть в базе данных?ItemController:
public function import(Item $item, Request $request)
{
if ($request->hasFile('itemsfile')) {
if ($request->itemsfile->getClientOriginalExtension() == 'csv')
{
$rowCount = 0;
$csvAsArray = array_map(function($v){return str_getcsv($v, ";");}, file($request->file('itemsfile')));
foreach($csvAsArray as $row)
{
if(count($row)>=2){
if(trim($row[0]) != '' && trim($row[1]) != '') {
$item= new Item();
$item->item_id= $row[0];
$item->description= $row[1];
$item->save();
$rowCount++;
}
} else {
}
}
return redirect()->route('admin.items');
}
else {
return back();
}
}
else {
return back();
}
}
ItemRequest:
public function rules()
{
return [
'item_id' => 'required|unique:items'
];
}
Когда я добавляю новый элемент (не импортирую его), проверка уникального номера идентификатора работает нормально, но когда я хочу импортировать пакеты изФайл CSV и не импортируйте строки, которые уже находятся в базе данных, весь CSV импортируется.Спасибо за помощь!dd (csvAsArray);
массив: 30 [▼ 0 => массив: 2 [▼ 0 => "Desc 1" 1 => "123456789"] 1 => массив: 2 [▶],,,и т. д.