Mih*_*iță 2 php mysql laravel eloquent
我尝试使用Laravel Framework附带的Eloquent ORM在表中插入新记录,结果插入语句如下:
嵌入到
table_x(field_x,field_y,field_z)VALUES(0,1,2)
我从MySQL服务器收到以下错误:
SQLSTATE [HY000]:常规错误:1364字段“字段”没有默认值
我没有在INSERT语句中提供该字段。该字段的类型为TEXT,并且来自MySQL docs:“ BLOB和TEXT列不能具有DEFAULT值”。
因此,我总是必须在TEXT字段的php代码中为自己提供默认值?或者,也许Eloquent应该处理此问题并在插入时自动设置一个空字符串?
MySQL不支持在TEXT列中具有默认值。因此,您必须手动告诉Laravel / MySQL在该列中输入什么。例如。
INSERT INTO table_x (field_x, field_y, field_z, your_text_field) VALUES (0, 1, 2, "");
Run Code Online (Sandbox Code Playgroud)
要么
INSERT INTO table_x (field_x, field_y, field_z, your_text_field) VALUES (0, 1, 2, NULL);
Run Code Online (Sandbox Code Playgroud)
因此,在您的口才模型中,您将必须执行类似的操作。
$myModel->your_text_field = '';
Run Code Online (Sandbox Code Playgroud)
要么
$myModel->your_text_field = null;
Run Code Online (Sandbox Code Playgroud)
取决于您是否已将列设置为可为空。
更新:作为Mihai Cr?i ?? 问题作者在我的答案中进行了评论,在GitHub票证中,我们可以通过这种方式为Eloquent模型中的任何列设置默认值,因此我们不必担心总是需要手动设置。
class MyModel extends Eloquent
{
protected $attributes = array('your_text_field' => '');
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1053 次 |
| 最近记录: |