![](/img/trans.png)
[英]Illuminate/Database/QueryException with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column
[英]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:插入
projects
(title
,updated_at
,created_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.