如何修复“带有消息'SQLSTATE [42S22]的Illuminate / Database / QueryException:找不到列:1054未知列”?

时间:2019-01-11 07:03:04

标签: php laravel laravel-5

我已经创建了一个名为project

的模型
  

php artisan make:model项目

然后使用php artisan tinker尝试向其中添加一条记录。

在运行时在命令行中:

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

它显示此错误:

  

带有消息'SQLSTATE [42S22]的Illuminate / Database / QueryException:   找不到列:1054“字段列表”中的未知列“ title”(SQL:   插入projectstitleupdated_atcreated_at)个值中   (我的第一个项目,2019-01-11 06:46:09,2019-01-11 06:46:09))'

它不执行$project->save();并给出此错误。请帮忙。

2 个答案:

答案 0 :(得分:2)

未执行迁移

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关于口才模型的约定,以便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

答案 1 :(得分:1)

您必须尝试以下操作:

 $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();