Я новичок в фреймворке 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>
Возможный дубликат Недопустимое смещение строки Предупреждение PHP






Вам не нужно делать еще один цикл 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
а в вашем CSV-файле есть столбец с заголовком customerid?
рад помочь. Не могли бы вы проголосовать за мой ответ? :)
Это означает, что у
$rowнет индексаcustomerid, используйтеvar_dump($row), чтобы увидеть содержимое массива