Laravel: csv validations

Как я могу проверять поля в файле 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();
        };

    }
1
задан 13 August 2018 в 16:15

1 ответ

Что вы можете сделать, это создать любую переменную массива 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
0
ответ дан 15 August 2018 в 16:58
  • 1
    я думаю, что мой вопрос не cleaer .... для exapmle у меня есть 2 электронных письма, доступных в db a@gmail.com и b@gmail.com ..... и такие же доступны в csv с 1 новым id c @ gmail. com ..... чем тогда, когда я нажимаю кнопку отправки, чтобы загрузить ее, дает мне ошибку, что это идентификаторы уже доступны, и это новый идентификатор ... – Muhammad Kazim 13 August 2018 в 16:41

Другие вопросы по тегам:

Похожие вопросы: