gpt4 book ai didi

php - 我是否应该始终在 php 中为 mysql 中的 TEXT 字段提供默认值

转载 作者:行者123 更新时间:2023-11-29 01:28:56 25 4
gpt4 key购买 nike

我尝试使用 Laravel Framework 附带的 Eloquent ORM 在表中插入一条新记录,插入语句结果如下:

INSET INTO table_x (field_x, field_y, field_z) VALUES (0, 1, 2)

我从 MySQL 服务器收到以下错误:

SQLSTATE[HY000]: General error: 1364 Field 'field' doesn't have a default value

我没有在我的 INSERT 语句中提供该字段。该字段是 TEXT 类型,来自 MySQL 文档:“BLOB 和 TEXT 列不能有默认值”

所以我总是必须在我的 php 代码中为 TEXT 字段提供一个默认值?或者 Eloquent 应该处理这个问题并在插入时自动设置一个空字符串?

最佳答案

MySQL 不支持在 TEXT 列中使用默认值。所以你必须手动告诉 Laravel/MySQL 在那个列中放什么。例如。

INSERT INTO table_x (field_x, field_y, field_z, your_text_field) VALUES (0, 1, 2, "");

INSERT INTO table_x (field_x, field_y, field_z, your_text_field) VALUES (0, 1, 2, NULL);

所以在您的 Eloquent 模型中,您必须做类似的事情。

$myModel->your_text_field = '';

$myModel->your_text_field = null;

取决于您是否将列设置为可为空。


更新:作为Mihai Crăiță作者在我的回答中评论的问题,以及in GitHub ticket ,我们可以通过这种方式为 Eloquent 模型中的任何列设置默认值,因此我们不必担心必须一直手动设置。

class MyModel extends Eloquent
{
protected $attributes = array('your_text_field' => '');

...
}

关于php - 我是否应该始终在 php 中为 mysql 中的 TEXT 字段提供默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24361295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com