es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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 where user_email = myemail@xyz.com)

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error es causado por la consulta SQL que no puede encontrar la columna user_email en la tabla users. 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 regla unique en el validador para que coincida con el nombre real de la columna en la tabla de la base de datos. Entonces, cambia unique:users por unique:users,email. Esto asegurará que la columna email se utilice en lugar de la antigua columna user_email en la consulta SQL. El código actualizado debería verse así:

    Validator::make($input, [
        'name' => ['required', 'string', 'max:255'],
        'phone' => ['required', 'string', 'max:255'],
        'user_email' => ['required', 'string', 'email', 'max:255', 'unique:users,email'],
        'user_password' => $this->passwordRules(),
        'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['required', 'accepted'] : '',
    ])->validate();
    

    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.

Comments are closed.