Al cambiar el nombre del campo de entrada de correo electrónico a “user_email” en register.blade en Laravel, obtengo un error.
Estoy usando Fortify y cambié el nombre del campo de entrada de correo electrónico a ‘user_email’ y hice los cambios necesarios en el validador como se muestra a continuación y en el formulario de registro, pero obtuve un error.
namespace App\Actions\Fortify;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Laravel\Fortify\Contracts\CreatesNewUsers;
use Laravel\Jetstream\Jetstream;
class CreateNewUser implements CreatesNewUsers
{
use PasswordValidationRules;
/**
* Valida y crea un usuario recién registrado.
*
* @param array $input
* @return \App\Models\User
*/
public function create(array $input)
{
Validator::make($input, [
'name' => ['required', 'string', 'max:255'],
'phone' => ['required', 'string', 'max:255'],
'user_email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'user_password' => $this->passwordRules(),
'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['required', 'accepted'] : '',
])->validate();
return User::create([
'name' => $input['name'],
'phone' => $input['phone'],
'email' => $input['user_email'],
'password' => Hash::make($input['user_password']),
'role' => 5, // 1 para superadmin y 5 para usuario
'status' => 1,
]);
}
}
Error
Illuminate\Database\QueryException SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘user_email’ in ‘where clause’ (SQL: select count(*) as aggregate from
users
whereuser_email
= myemail@xyz.com)
davy.ai
El error es causado por la consulta SQL que no puede encontrar la columna
user_email
en la tablausers
. Esto se debe a que el nombre de la columna ha sido cambiado en el validador y en el formulario de registro, pero no se ha actualizado en la consulta SQL. Para solucionar este error, debes actualizar la reglaunique
en el validador para que coincida con el nombre real de la columna en la tabla de la base de datos. Entonces, cambiaunique:users
porunique:users,email
. Esto asegurará que la columnaemail
se utilice en lugar de la antigua columnauser_email
en la consulta SQL. El código actualizado debería verse así:Después de hacer este cambio, la consulta SQL debería ser capaz de encontrar el nombre de columna correcto y el error debería ser resuelto.