请教下文档中关于 $fillable 的问题?

在topic的模型里定义了protected $fillable = ['title', 'body', 'category_id', 'excerpt', 'slug'];
同时在topic的控制器里有个store方法是用来保存新建立的话题的,在保存时,教程里没有定义
$topic->excerpt都能保存成功,而我不定义$topic->excerpt会报没有excerpt默认值的问题,
这是为什么呢,好像$fillable里的字段必须有值才可以存?或者是不是哪里要
设置参数呢?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

$fillable 里存在的字段,用 create 方法可以直接插入到数据表中
教程中可以添加成功是因为在文章下部分

app/Observers/TopicObserver.php 文件里定义了

file

6年前 评论
讨论数量: 4
Epona

1.可以在迁移文件里写数据库的时候设置一个默认值

$table->string('xxxx')->default('');

2.可以将config/database.php 文件内的mysql设置里面有个strict 改成false

应该可以解决你的问题

6年前 评论

$fillable 里存在的字段,用 create 方法可以直接插入到数据表中
教程中可以添加成功是因为在文章下部分

app/Observers/TopicObserver.php 文件里定义了

file

6年前 评论

@Ken
我觉得教程这里是有个问题的。
后面在TopicObserver中的saving方法里,给excerpt赋值了,所以可以保存成功。
但是教程是在在讲Observer之前,就提交了创建Topic,并说创建成功。其实不会,而是会报错误,说excerpt没有default值。当然,原因也很清楚,用代码生成器生成Topics表格时,excerpt并没有设置默认值。如下:

excerpt:text
slug:string:nullable

解决方法是,要么教程等到讲过Observer的saving方法之后再试图创建topic,要么在上一章用代码生成器时改成excerpt:text:nullable。

5年前 评论
任飘渺

数据库也需要设置为null

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!