尝试使用save时,Laravel完整性约束违规

时间:2014-10-23 03:21:22

标签: laravel eloquent

我收到错误:

  

完整性约束违规:19 NOT NULL约束失败:songs.slug(SQL:插入"歌曲"("标题"," updated_at",&# 34; created_at")值(只要你爱我测试,2014-10-22 04:09:02,2014-10-22 04:09:02))

尝试更新歌曲时。任何人都知道我做错了什么?

这是我的更新功能:

public function update(Song $song, Request $request)
{
   $song->fill(['title' => $request->get('title')])->save();
   return redirect('songs');
}

有谁能帮我理解这里有什么问题?我跟着一个Laracast来构建这个函数,看起来应该只是给它这个约束错误。请帮助:))

2 个答案:

答案 0 :(得分:0)

确保您的歌曲模型中设置了protected $fillable = ['title'];,因为Laravel可以防止质量分配(使用 - > fill()),这意味着它将忽略您传入填充方法的任何键/值以前没有在模型的$ fillable属性中定义!

答案 1 :(得分:0)

正如此错误所说

Integrity constraint violation: 19 NOT NULL constraint failed: songs.slug (SQL: insert into "songs" ("title", "updated_at", "created_at") values (As Long As You Love Me test, 2014-10-22 04:09:02, 2014-10-22 04:09:02))

slug表的songs列为NOT NULL,在保存模型之前,您尚未为其设置值。