Laravel excel проверяет, не дублируется ли комбинация двух столбцов

У меня есть требование, в соответствии с которым мне нужно убедиться, что файл Excel, загружаемый пользователем, не имеет повторяющихся строк w.r.t. 2 конкретных столбца.

Пример:

В приведенном ниже фрагменте я хочу отметить, что строки 1 и 2 содержат повторяющуюся комбинацию COMPANY_CODE и CLERK_CODE:

введите здесь описание изображения

Если такая повторяющаяся комбинация обнаружена, я хочу отклонить весь импортируемый файл и сообщить пользователю, в чем проблема.

Какие-нибудь подсказки?


person Akshay Lokur    schedule 17.07.2019    source источник
comment
Возможно, это укажет вам правильное направление: stackoverflow.com/questions/31377783/   -  person robbyrr    schedule 17.07.2019


Ответы (1)


Не уверен, что Maat / Laravel Excel может легко решить эту проблему. Итак, я пошел дальше и создал ассоциативный массив с ключом как объединение двух столбцов, которые я не хочу повторять в Excel.

Затем я вручную проверяю, используя цикл foreach, что если ключ существует в ассоциативном массиве, это означает, что в Excel есть повторяющаяся запись.

Некоторые примеры кода для справки ниже:

        $array = Excel::toArray(new MyExcelImport(), request()->file);

        $assoc_array = array();
        foreach ($array[0] as $key => $value) {
            $new_key = $value['company_code'] . $value['clerk_code'];

            // Presence of combination of company_code and clerk_code in the assoc_array indicates that
            // there is duplicate entry in the Excel being imported. So, abort the process and report this to user.
            if (array_key_exists($new_key, $assoc_array)) {
                return response()->json("Combination of company_code: " .
                    $value['company_code'] .
                    " and clerk_code: " .
                    $value['clerk_code'] .
                    " is duplicate in the file being imported. Please correct same and retry upload.", 422);
            }

            $assoc_array[$new_key] = $value;
        }

Надеюсь, это поможет кому-то с похожими потребностями!

person Akshay Lokur    schedule 18.07.2019