dongxiao_0528
2018-08-13 13:15
浏览 155
已采纳

Laravel:csv验证

How i can validate fields in csv file before uploading.

I want to get all duplicate email ids from csv file before uploading which are already available in db.

and if there is duplciate in file than upload the other except duplicate and after uploading display all duplicate email ids

    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();
        };

    }

图片转代码服务由CSDN问答提供 功能建议

如何在上传之前验证csv文件中的字段。

我想要 在上传之前从csv文件中获取所有重复的电子邮件ID,这些已经在db中可用。

如果文件中有duplciate而不是上传除了副本之外的其他内容,并且在上传后显示所有重复的电子邮件ID

 公共功能商店( 请求$ request)
 {
 $ upload = $ request-> file('upload-file'); 
 $ getPath = $ upload-> getRealPath(); 
 
 $ file = fopen($ 的getPath, 'R');  
 
 while($ columns = fgetcsv($ file))
 {
 if if($ columns [0] ==“”)
 continue; 
 
 
 $ data = $ columns; 
  
 
 foreach($ data as $ key => $ value)
 {
 $ name = $ data [0]; 
 $ email = $ data [1]; 
 $ password = $ data [  2]; 
 
} 
 
尝试{
 $ user = User :: Create(
 [
'name'=> $ name,
'email'=> $ email,\  n'密码'=> $密码,
 
]); 
 $ user-> save(); 
} 
 catch(Exception $ e)
 {
 if if($ e-> getCode  ()== 23000)
返回'我们找到了重复记录'; 
其他
 $ e-> getCode(); 
}; 
 
} 
    
 
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • donglu8779 2018-08-14 04:57
    已采纳

    So you can do like this.

          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{
                 if (!User::whereEmail($email)->exists()) {
                    $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();
                };
    
            }
    
    评论
    解决 无用
    打赏 举报
  • 查看更多回答(1条)

相关推荐 更多相似问题