Laravel SQLite 字段的默认值

Posted

技术标签:

【中文标题】Laravel SQLite 字段的默认值【英文标题】:Laravel SQLite Default Value to a field 【发布时间】:2018-07-02 14:13:37 【问题描述】:

好的,我遇到了这个问题:

我在我的迁移中设置了一个带有默认值的布尔属性:

$table->boolean('is_public')->default(1);

它在我的初始数据库 mysql 上运行良好。我迁移了数据库并手动插入,它被插入为 true。

但问题是,当我运行在内存数据库中配置了 sqlite 的测试时,没有添加默认值。所以这个断言:

$this->assertEquals($league->is_public, 1);

...在不应该的时候失败了。

有人知道我错过了什么吗?我是否必须添加更多内容才能将默认值添加到数据库中,或者这是某种sqlite 问题?

【问题讨论】:

dd($league->is_public) 显示了什么? 它在我的测试中显示null dd($league) 显示了什么? 显示创建的联赛。联盟是使用名称和其他必需属性创建的,没有默认值。 所以,它显示了League 对象,其中is_publicnull?请说明您在测试中究竟是如何创建对象的。 【参考方案1】:

将您的迁移更改为此。

$table->boolean('is_public',true);

【讨论】:

boolean() 方法没有第二个参数。 我不确定它不会,但如果它不只是将 '1' 更改为 'true' 并且它应该可以工作

以上是关于Laravel SQLite 字段的默认值的主要内容,如果未能解决你的问题,请参考以下文章

为 Laravel 表单字段定义默认值

错误字段在 laravel 5.3 中没有默认值

Laravel 5.4 字段没有默认值

Laravel 表更新问题一般错误:1364 字段'start_date'没有默认值

Laravel Schema Builder 更新默认值

在Laravel中添加表单提交的默认值