在上传之前,如何验证csv文件中的字段。
我想在上传之前从csv文件中获取所有重复的电子邮件ID,这些ID在数据库中已经可用。
如果文件中存在重复文件,则上传其他文件(重复项除外),并在上传后显示所有重复的电子邮件ID
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();
};
}
答案 0 :(得分:0)
您可以做的是,创建任何私有,公共等数组变量(无论您想要什么),并将所有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
答案 1 :(得分:0)
因此您可以这样做。
x <- c("xxxxxxx8", "1234567x", "ab12ef78", "x!3d5f78", "x23456789", "Ab123456")
grepl("^(?=.*[a-z])(?=.*\\d)[a-z\\d]{8}$", x, perl=TRUE)
# [1] TRUE TRUE TRUE FALSE FALSE FALSE