我正在尝试在laravel中启动一个项目,并且在注册时选择性别时遇到此错误。
SQLSTATE [HY000]:常规错误:1364字段“性别”没有 默认值
<div id='d1'>
1
</div>
<div id='d2'>
2
</div>
<div id='d3'>
<div id='d3a'>
3a
</div>
</div>
如果我通过phpMyAdmin中的“性别” Null选项运行,则不会出现错误,但是不会显示性别,而是显示“ NULL”。
HTML
public function removeProfile($child)
{
$profile = Profile::find(1);
$child->profiles()->detach($profile);
return 'Success';
}
我已经做过:
return User::create([
'name' => $data['name'],
'avatar' => $avatar_path,
'gender' => $data['gender'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
我还向PHPMyAdmin添加了<div class="form-group row">
<label for="name" class="col-md-4 col-form-label text-md-right">Gender</label>
<div class="col-md-6">
<select name="gender" class="col-md-4 control-label">
<option value="male" name="male">Male</option>
<option value="female" name="female">Female</option>
</select>
@error('gender')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
,但我不断收到错误消息。
答案 0 :(得分:2)
使用nullable,看来迁移正确。请问您是否已删除旧数据库并重新迁移其中包含的enumerate()
?也许它仍然可以在没有i
字段可为空的旧数据库上工作。
接下来的事情是尝试直接输入数据以查看问题出在DB还是来自表单的输入。试试这个:
temperatures = [33, 66, 65, 62, 59, 60, 62, 64, 70, 76, 80, 69, 80, 83, 68, 79, 61, 53, 50, 49, 53, 48, 45, 39]
hour_ex = []
for i, temperature in enumerate(temperatures):
if temperature > 70:
hour_ex.append(i)
print(hour_ex) # => [9, 10, 12, 13, 15]
如果这行得通,则问题在于表单中出现了空值,并且数据库未设置为采用空值。
还要确保用户模型实际上具有hour_ex = [i for i, temp in enumerate(temperatures) if temp > 70]
字段为可填写字段。在您的用户模型上,确保其外观如下:
$table->string('gender')->nullable();
答案 1 :(得分:0)
什么是性别的数据类型?
如果它是字符串,则应在db中添加可为null的值,否则可以将其值更改为0或1
答案 2 :(得分:0)
您需要在迁移过程中的性别字段中添加可空值
$table->type('gender')->nullable();