Как исправить «Освещение / База данных / QueryException с сообщением« SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец »? - PullRequest
0 голосов
/ 11 января 2019

Я создал модель с именем project

php artisan make: модельный проект

и затем с помощью php artisan tinker попытался добавить в него запись.

В командной строке при запуске:

$project = new App\project;
$project->title='My first project';
 $project->save();

Это показывает эту ошибку:

Осветить / База данных / QueryException с сообщением «SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец «заголовок» в «списке полей» (SQL: вставить в projects (title, updated_at, created_at) значения (Мой первый проект, 2019-01-11 06:46:09, 2019-01-11 06:46:09)) '

Не выполняет $project->save(); и выдает эту ошибку. Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Миграция не выполнена

php artisan make:model project

Это ошибка, которая, как я полагаю, у вас не создан файл миграции (см. Раздел Future Reference ниже, почему я так сказал), поскольку в сообщении об ошибке указано, что столбец не найден.

Чтобы лучше решить эту проблему, я предлагаю вам создать файл миграции следующим образом:

php artisan make:migration create_projects_table

Вы видите внутри database/migrations, есть новый файл с именем 2019_01_11_153037_create_projects_table что-то. Время и дата отличаются от ваших, но основное внимание уделяется 'create_projects_table'

Внутри файла миграции вы можете видеть функцию up(). Скопируйте этот код

public function up()
    {
        Schema::create('projects', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->timestamps();
        });
    }
}

Наконец, выполните миграцию, и вы должны увидеть перенесенное сообщение об успехе.

php artisan migrate

Ссылка на будущее

В будущем, чтобы сэкономить время, вы можете создать модель вместе с ее миграцией следующим образом:

php artisan make:model Project -m

Обратите внимание на тег -m, который создает файл миграции для вас. После этого приступите к редактированию файла миграции (например, добавьте в него столбцы, как показано ранее).

Узнайте больше о миграции Laravel здесь: https://laravel.com/docs/5.7/migrations

Еще одно примечание, ознакомьтесь с соглашением Laravel по Eloquent Model, чтобы Laravel мог исполнить его магию: https://laravel.com/docs/5.7/eloquent#eloquent-model-conventions

Ваша project модель должна быть Project

Редактировать

Если вы ранее выполняли миграцию, запустите другую миграцию (нет никаких ограничений на то, сколько вы можете выполнить миграцию).

php artisan make:migration add_column_title_to_projects_table

И создан новый файл миграции. Внутри функции up() добавьте этот код:

public function up()
{
    Schema::table('projects', function (Blueprint $table) {
        $table->string('title');
    });
}

Наконец, выполните php artisan migrate

0 голосов
/ 11 января 2019

Вы должны попробовать это:

 $project = new Project;

 $project->title = $request->title;

 $project->save(); // it will INSERT a new record

Обновленный ответ

$project = new App\Project;
$project->title='My first project';
 $project->save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...