我已经创建了一个名为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: 插入
projects
(title
,updated_at
,created_at
)个值中 (我的第一个项目,2019-01-11 06:46:09,2019-01-11 06:46:09))'
它不执行$project->save();
并给出此错误。请帮忙。
答案 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();