我只是想在 posts
使用一个简单的表格,这是我的 store()
插入新行的方法:
//FILE: PostsController.php
public function store(Request $request)
{
//Using hard-coded values instead of actual form data, just to test
Post::create([
'title' => "test",
'post' => "some text",
'author' => "2",
'slug' => "slug-value"
]);
return redirect('/posts');
}
这是我的模型课程:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = [
'title', 'post', 'author', 'slug'
];
}
下面是我的迁移类(仅显示 public function up()
,rest与任何普通迁移类相同):
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->longtext('post');
$table->integer('author');
$table->string('slug');
$table->string('tags')->nullable();
$table->string('pics')->nullable();
$table->timestamps();
});
}
问题:提交表格时(即打电话时 store()
方法),它给出以下错误:
“sqlstate[hy000]:常规错误:1364字段'slug'没有默认值(sql:insert into posts
( title
, post
, author
, updated_at
, created_at
)值(测试,部分文本,2,2018-12-05 15:00:33,2018-12-05 15:00:33))◀"
我不明白为什么没有 slug
由laravel生成的insert查询中的列。我花了好几个小时来寻找这个问题,但没有找到任何与之相关的答案,大多数答案都显示了添加到 $fillable
作为解决办法,但我已经有了。
在我的数据库里 posts
是否包含 slug
列。当我跑的时候,它也会在tinker上显示出来 \Schema::getColumnListing('posts');
.
或许有帮助:我添加了 slug
列之后的迁移类,在此之前,一切都很正常。我确实跑了 migrate:fresh
将列添加到迁移类后的命令;当然到现在为止我已经试过了 migrate:rollback
然后 migrate
, migrate:refresh
等。。。但什么都不管用。
你知道为什么不包括 slug
插入查询中的列?
3条答案
按热度按时间gmxoilav1#
如果已经在模型的filleble属性中添加了“slug”,那么表单中的数据不包含属性“slug”。您可以使用以下方法在控制器中转储请求:
waxmsbnn2#
这个问题已经有几个月了,但我只是面对同样的问题,在一个完全不同的地方找到了解决方法:一个陷阱是,如果你设置了一个
在你的模型里(请注意,该函数是用camelcase编写的,即使属性是用camelcase编写的。)如果您没有将此函数中的任何内容设置为
实际上没有为示例设置任何内容,并且此字段不会添加到由
Post::create()
功能。也许这对将来的人有帮助!
l2osamch3#
回滚迁移,再次迁移。
然后将此更改为您的模型: