猿问

无法在拉拉维尔应用程序 (mysql) 中为数据库文本字段提供默认值

在我的laravel应用程序中,我有一个文本类型的帖子“正文”字段,我试图给该字段一个默认值,如“这个sis是博客文章的默认文本,可以随意更改它”,但mysql抛出了一个错误。

$table->text('body')->default('This is the default text for a blog post, feel free to change it.');

这不起作用...

根据文档,BLOB/文本字段不能有默认值,这是非常奇怪的tbh。

https://dev.mysql.com/doc/refman/5.7/en/blob.html

我想我可以将字段类型从文本更改为字符串,但是afaik字符串不会像字符串类型那样多的字符,我可以肯定的是,我的博客文章将是loooong。我该如何解决这个问题?

提前致谢。


哔哔one
浏览 85回答 3
3回答

呼啦一阵风

您可以使用访问器&突变体这里有一个为body设置默认值的例子 它的作用是,每次你的模型要保存在数据库中时,它都会检查值是否为空,然后它设置你的默认值只需将下面的代码放入你的模型中。public function setBodyAttribute($value = null)    {        if (null === $value) {            $this->attributes['body'] = 'default value';        }        $this->attributes['body'] = $value;    }

慕村225694

在mysql中,你不能给出文本默认值。解决 方案:将其转换为( 一行最多可以包含 255 个字符)varchar用代码给出默认值(在创建期间,创建后,默认占位符文本... )

料青山看我应如是

您可以将其设置为可为空,并且在您的视图中,如果是,则只需为其提供默认文本。$table->text('body')->nullable(true);NULL
随时随地看视频慕课网APP
我要回答