SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец в php - PullRequest
0 голосов
/ 23 октября 2019

Я делаю приложение, в котором хочу войти в систему и зарегистрироваться, а также могу импортировать CSV-файл в базу данных, reg и login работают хорошо, но я столкнулся с этим, когда хочу импортировать CSV:

ошибка luminate \ Database \ QueryException SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец 'classe' в 'where clause' (SQL: выберите * из accounts где (classe = 7 иnocompte = 7598) предел 1) Таблица счетов

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateAccountsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('accounts', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('AccountClass');
            $table->integer('AccountNumber');
            $table->string('AccountDesc');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('accounts');
    }
}

Контроллер счетов

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Accounts;
class AccountController extends Controller
{
    public function show(){
        return view ('upload');
    }
    public function store(Request $request){
        $upload = $request->file('upload-file');
        $filePath = $upload->getRealPath();
        $file = fopen($filePath,'r');
       $fileconverted =  mb_convert_encoding($file, 'UTF-16LE', 'UTF-8');
        $header = fgetcsv($file);
        // dd($header);
        $escapedHeader = [];
        foreach ($header as $key =>  $value){
            $header1=strtolower($value);
            $escapedItem=preg_replace('/[^a-z]/', '' ,$header1);

array_push($escapedHeader,$escapedItem);
        }
        while($columns=fgetcsv($file)){
            if($columns[0]==""){
                continue;
            }
           //trim data
           foreach ($columns as $key => &$value) {
            $value=preg_replace('/\D/','',$value);
        }
       $data= array_combine($escapedHeader, $columns);
    //    dd($data);
        }
        $AccountClass = $data['classe'];
        $AccountNumber = $data['nocompte'];
        $AccountDesc =  $data['libell'];
        $Accounts= Accounts::firstOrNew(['classe'=>$AccountClass,'nocompte'=>$AccountNumber]);
        $Accounts->AccountClass=$AccountClass;
        $Accounts->AccountNumber=$AccountNumber;
        $Accounts->AccountDesc=$AccountDesc;

        $Accounts->save();


    }
}

1 Ответ

1 голос
/ 23 октября 2019

Вы предлагаете запросить таблицу «счетов», ища поле с именем 'classe':

Accounts::firstOrNew(['classe'=>$AccountClass,'nocompte'=>$AccountNumber]);

Возможно, вы имеете в виду «AccountClass»?

Accounts::firstOrNew(['AccountClass' => $AccountClass, ...]);

После того, как выотрегулируйте, что вы столкнетесь с той же ошибкой для 'nocompte', которая также не существует в этой таблице ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...