【发布时间】:2018-08-02 15:03:03
【问题描述】:
我对 Laravel 和默认值有疑问。我像这样在表中创建了该字段:
$table->string('title', 255)->default('');
在模型中,我再次使用此设置了默认设置:
protected $attributes = [
'title' => '',
];
但我总是收到此错误:
SQLSTATE[23502]:非空违规:7 错误:列中的空值 “标题”违反非空约束细节:失败行包含 (3dd07c7a-e3f3-4f20-8d16-0f066b219dc2,dsfs,sdfs,空,空,空, sdfs, null, 0, 0, 0, 0, 0, 0, null, null, null)。 (SQL:插入 “用户”(“标题”、“名字”、“姓氏”、“电子邮件”、“业务单位”、 "linkedin_profile") 值 (, dsfs, sdfs, sdfs, , ) 返回 "user_id")
我的简短保存操作(没有验证的示例)如下:
$data = Input::all();
$user = new Users($data);
$user->save();
以下是$data:
array (size=12)
'_token' => string '0EI9JGmgiNDAqmv83pdQZaktyWNLiX3GB9JQSfvA' (length=40)
'first_name' => string 'ads' (length=3)
'last_name' => string 'asd' (length=3)
'email' => string 'asd' (length=3)
'title' => null
'business_unit' => null
'linkedin_profile' => null
'is_admin' => string '0' (length=1)
'is_employee' => string '0' (length=1)
'is_manager' => string '0' (length=1)
'is_trainer' => string '0' (length=1)
'rt' => string '/users' (length=6)
我的默认值怎么没有设置?
【问题讨论】:
-
受保护的 $attributes = [ 'title' => null, ];
-
你能告诉我们你创建/保存模型的代码吗?
-
您甚至不需要在模型中设置默认值。如果您的属性中没有
title,Eloquent 不会发送它,然后它会回退到 MySQL 默认值。 -
@ChinLeung 我用我的储蓄方式更新了这个问题。
-
@DevinDixon 是
$data['title']设置为空?