我有以下形式的字段:
<label>Office Phone:</label><br>
<input type="number" name="office_phone" value="{{ old('office_phone') }}" class="form-control"><br>
@if ($errors->has('office_phone'))
<span class="help-block">
<strong>{{ $errors->first('office_phone') }}</strong>
</span>
@endif
这不是必填字段。如果没有给出任何输入,它应该在数据库中插入Null值。
我有这个验证规则:
'office_phone'=>'integer',
并创建()方法:
return User::create([
'office_phone'=>$data['office_phone]
但如果没有给出输入,则不插入Null值:它给出错误:
日期时间格式无效:1366整数值不正确:''列 'office_phone'在第1行
但是如果office_phone
有一些值,那么插入就好了。我做错了什么?
office_phone in database has Type int(10) default NULL and Null yes
答案 0 :(得分:1)
如果您没有输入数据,那么您的值将为空"" != NULL
。因此,如果value为空,则将其替换为null。试试这个:(在return User::create()
之前)
$data['office_phone'] = $data['office_phone'] === ""?NULL:$data['office_phone'];
答案 1 :(得分:1)
在你的情况下,没有值时会发生什么,然后传递空字符串''
,这是MYSQL中的空值。所以它抛出了这个错误,因为整数列这样的值是不允许的,但对varchar来说很好。
所以你有两个选择: