Как я могу проверять поля в файле csv перед загрузкой.
Я хочу получить все дублированные идентификаторы электронной почты из файла csv перед загрузкой, которые уже доступны в db.
, и если в файле есть дубликат, чем загрузка другого, кроме дубликата, и после загрузки всех дубликатов идентификаторов электронной почты
public function store(Request $request)
{
$upload = $request->file('upload-file');
$getPath = $upload->getRealPath();
$file = fopen($getPath,'r');
while($columns = fgetcsv($file))
{
if($columns[0]=="")
continue;
$data = $columns;
foreach($data as $key=>$value)
{
$name = $data[0];
$email = $data[1];
$password = $data[2];
}
try{
$user = User::Create(
[
'name'=>$name,
'email'=>$email,
'password'=>$password,
]);
$user->save();
}
catch(Exception $e)
{
if($e->getCode() == 23000)
return 'we have found duplicate records';
else
$e->getCode();
};
}
Что вы можете сделать, это создать любую переменную массива private, public и т. д. (что бы вы ни пожелали) и направить все значения excel этой переменной и найти уникальные результаты, заданные из этого массива, используя функцию php и сохранить их в базе данных.
public $records = [];
public function store(Request $request)
{
$upload = $request->file('upload-file');
$getPath = $upload->getRealPath();
$file = fopen($getPath,'r');
while($columns = fgetcsv($file))
{
if($columns[0]=="")
continue;
$data = $columns;
array_push($this->records, data);
}
}
array_unique($this->records)//it will give you unique results set and insert bulk insert