繁体   English   中英

如何修复“Illuminate / Database / QueryException with message'SQLSTATE [42S22]:找不到列:1054未知列”?

[英]How to fix “Illuminate/Database/QueryException with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column”?

我创建了名为project模型

php artisan make:模型项目

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

在我运行的命令行中:

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

它显示了这个错误:

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

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

没有进行迁移

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

你必须尝试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM