ErrorException (E_WARNING) Недопустимое смещение строки 'customerid'

Я новичок в фреймворке laravel. я получаю сообщение об ошибке

ErrorException (E_WARNING) Illegal string offset 'customerid'

Я попытался импортировать файл excel и показать данные в таблице данных на той же странице. Я получил ошибку:

call to undefined method maatwebsite/Excel/Excel::load().

Чтобы исправить эту ошибку, я понизил версию maatwebsite/excel с 3.1 до ~2.1.0, а затем обновил композитор с помощью composer update. Затем я получил еще одну ошибку. Переключатель таргетинга «продолжить» эквивалентен разрыву — я исправил его, изменив «продолжить продолжить 2» в файле OLE.php.

Теперь я получаю новую ошибку

"ErrorException (E_WARNING) Illegal string offset 'customerid'"

public function import_csv(Request $request)
{
    $this->validate($request, [
        'select_file' => 'required|mimes:xls,xlsx',
    ]);

    $path = $request->file('select_file')->getRealPath();

    $data = Excel::load($path)->get();

    if ($data->count() > 0) {
        foreach ($data->toArray() as $key => $value) {
            foreach ($value as $row) {
                $insert_data[] = [
                    'customerid'  => $row['customerid'],
                    'enquiryid'   => $row['enquiryid'],
                    'productid'   => $row['productid'],
                    'productname' => $row['productname'],
                    'quantity'    => $row['quantity'],

                ];
            }
        }

        if (!empty($insert_data)) {
            DB::table('enquiryproducts')->insert($insert_data);
        }
    }

    return back()->with('success', 'Excel Data Imported successfully.');
}

import_csv.blade.php:

<form id = "upload_csv_form" action = "{{ url('/import_csv/import') }}" method = "POST" enctype = "multipart/form-data">
    @csrf
    <div class = "row">
        <div class = "col-lg-6 col-md-12">
            <fieldset class = "form-group">
                <input type = "file" name = "select_file" accept = ".csv" class = "form-control-file" id = "select_file">
            </fieldset>
            <button type = "submit" name = "upload_csv" class = "btn btn-success">Upload Enquiry Products</button>
        </div>
    </div>
</form>

Это означает, что у $row нет индекса customerid, используйте var_dump($row), чтобы увидеть содержимое массива

catcon 10.07.2019 08:36

Возможный дубликат Недопустимое смещение строки Предупреждение PHP

Josh 10.07.2019 08:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
1 075
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам не нужно делать еще один цикл foreach для $value.

Попробуй это:

if ($data->count() > 0)
{
    foreach($data as $key => $value)             
    $insert_data[] = array(
       'customerid'   => $value['customerid'],
       'enquiryid'   => $value['enquiryid'],
       'productid'   => $value['productid'],
       'productname' => $value['productname'],
       'quantity'    => $value['quantity'],    
    );                
}

Спасибо! я попробовал приведенный выше код, но я получаю сообщение об ошибке ErrorException (E_NOTICE) Undefined index: customerid

Jipindas P 10.07.2019 08:53

а в вашем CSV-файле есть столбец с заголовком customerid?

Kusy 10.07.2019 09:09

рад помочь. Не могли бы вы проголосовать за мой ответ? :)

Kusy 10.07.2019 11:11

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