的值使用laravel上的eloquent和auth来注册和登录用户,但即时通讯在注册控制器的创建函数中遇到问题。问题是,如果由于字段没有默认值而导致插入失败(这意味着它无法获得该字段的任何值,它会尝试获取默认值,如果它没有,那么它就是样子。 这是控制器代码:Laravel雄辩的插入查询无法捕获来自输入
protected function validator(array $data)
{
// terminar validacion
//dd($data['nacimiento']);
return Validator::make($data, [
'name' => 'required|max:255',
'lastname' => 'required|max:255',
'nacimiento' => 'date_format:"Y-m-d"|required',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
'password_confirmation' => 'required|min:6|'
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data)
{
if(!isset($data['avisos'])){
$data['avisos'] = 0;
}
if(!isset($data['actualizaciones'])){
$data['actualizaciones'] = 0;
}
if(!isset($data['ofertas'])){
$data['ofertas'] = 0;
}
// dd($data);
dd(User::create([
'name' => $data['name'],
'lastname' => $data['lastname'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'nacimiento' => $data['nacimiento'],
'suscAvisos' => $data['avisos'],
'suscOfertas' => $data['ofertas'],
'suscActualizaciones' => $data['actualizaciones'],
]));
}
,这是我的注册形式来看
<form action="/register" method="POST" class='form-reg'>
{{ csrf_field() }}
<fieldset class="datos">
@foreach($errors->all() as $error)
<span class="error">{{ $error }}</span> <br>
@endforeach
<label>
Nombre
<input type="text" name="name" value='' class="name">
</label>
<label>
Apellido
<input type="text" name="lastname" value='' class="apellido">
</label>
<label>
Email
<input type="email" name="email" value='' class="mail">
</label>
<label>
Fecha de nacimiento
<input type="date" name="nacimiento" value='' class="birthday">
</label>
<label>
Contraseña
<input type="password" name="password" value="" class="password">
</label>
<label>
Repetir la contraseña
<input type="password" name="password_confirmation" value="" class="passwordRepeat">
</label>
<section class="suscripciones">
<div clas="susc">
<input type="checkbox" name="avisos" value="1" class="checks">
<div class="susc-datos">
<h6>Avisos</h6>
<p>Recibir avisos, recomendaciones y actualizaciones sobre productos, servicios, actualizaciones de Nexround y más.</p>
</div>
</div>
<div class="susc">
<input type="checkbox" name="ofertas" value="1" class="checks">
<div class="susc-datos">
<h6>Ofertas de Nexround</h6>
<p>Recibir recomendaciones, lo más reciente, ofertas especiales y contenido exclusivo y más.</p>
</div>
</div>
<div class="susc">
<input type="checkbox" name="actualizaciones" value="1" class="checks">
<div class="susc-datos">
<h6>Actualizaciones de Nexround News</h6>
<p>Recibe los mejores artículos y recomendaciones de Noticias de Nexround enviadas directamente a tu bandeja de entrada.</p>
</div>
</div>
</section>
<div class="clear"></div>
<button type='submit' class="continuar-boton">Registrar</button>
</fieldset>
</form>
错误显示了这个
SQLSTATE[HY000]: General error: 1364 Field 'nacimiento' doesn't have a default value (SQL: insert into `users` (`name`, `lastname`, `email`, `password`, `suscAvisos`, `suscOfertas`, `suscActualizaciones`, `updated_at`, `created_at`) values (fela, bird, [email protected], $2y$10$SrvLDve6tJS/cLd5vWLK/eCwp1T/x4sIUcLelUpgFxvcSqNCfC7KW, 0, 0, 0, 2016-12-09 18:25:48, 2016-12-09 18:25:48))
我知道WH。在错误的手段,为什么它造成的,但我只是无法找到错误,为什么查询没有我的'nacimiento'值。 我调试创建和验证功能,看看数据['nacimiento']是否有东西,它确实。这就是为什么我很困惑
是'nacimiento'了'$ fillable'阵列的用户模型? – Devon
你使用迁移来创建你的表吗?如果需要,请发布您的用户表迁移。您可能需要检查'nacimento'是否为空。 – STWilson
omg,nacimiento was not on the fillable。该死的愚蠢。谢谢您的帮助!!!真! –