unknown sqlstate queryexception not illuminate found error column 42s22 php sql laravel where where-clause

php - queryexception - SQLSTATE[42S22]: Columna no encontrada: 1054 Columna desconocida-Laravel



sqlstate[42s22]: laravel (3)

Ha configurado la auth.php y los members usados ​​para la autenticación, pero no hay ningún campo user_email en la tabla de members , por lo que, dice Laravel

SQLSTATE [42S22]: Columna no encontrada: 1054 Columna desconocida ''user_email'' en ''where clause'' (SQL: select * from members where user_email =? Limit 1) (Enlaces: array (0 => ''[email protected]'', )

Porque intenta hacer coincidir el user_email en la tabla de members y no está allí. De acuerdo con su configuración de auth , laravel está utilizando la tabla de members para la tabla de autenticación no users .

Estoy usando el marco Laravel.

Tengo 2 tablas (usuarios y miembros). Cuando quiero iniciar sesión, aparece el mensaje de error:

SQLSTATE [42S22]: Columna no encontrada: 1054 Columna desconocida ''user_email'' en ''where clause'' (SQL: select * from members where user_email =? Limit 1) (Enlaces: array (0 => ''[email protected]'', )

Usuarios de mesa

CREATE TABLE IF NOT EXISTS `festival_aid`.`users` ( `user_id` BIGINT NOT NULL AUTO_INCREMENT, `user_email` VARCHAR(45) NOT NULL, `user_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `user_modified` TIMESTAMP NULL, `user_deleted` TIMESTAMP NULL, `user_lastlogin` TIMESTAMP NULL, `user_locked` TIMESTAMP NULL, PRIMARY KEY (`user_id`), UNIQUE INDEX `user_email_UNIQUE` (`user_email` ASC), ENGINE = InnoDB;

Miembros de la mesa

CREATE TABLE IF NOT EXISTS `festival_aid`.`members` ( `member_id` BIGINT NOT NULL AUTO_INCREMENT, `member_password` CHAR(32) NOT NULL, `member_salt` CHAR(22) NOT NULL, `member_token` VARCHAR(128) NULL, `member_confirmed` TIMESTAMP NULL, `user_id` BIGINT NOT NULL, PRIMARY KEY (`member_id`, `user_id`), INDEX `fk_members_users1_idx` (`user_id` ASC), CONSTRAINT `fk_members_users1` FOREIGN KEY (`user_id`) REFERENCES `festival_aid`.`users` (`user_id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB;

Usuario de migración

public function up() { Schema::table(''users'', function(Blueprint $table) { $table->increments(''user_id''); $table->string(''user_email''); $table->timestamp(''user_created''); $table->timestamp(''user_modified''); $table->timestamp(''user_deleted''); $table->timestamp(''user_lastlogin''); $table->timestamp(''user_locked''); }); }

Miembro de Migración

public function up() { Schema::table(''members'', function(Blueprint $table) { $table->increments(''member_id''); $table->string(''member_password''); $table->string(''member_salt''); $table->string(''member_token''); $table->foreign(''user_id'') ->references(''id'')->on(''users''); //->onDelete(''cascade''); $table->timestamp(''member_confirmed''); }); }

Usuario modelo

class User extends Eloquent { protected $table = ''users''; /** * The primary key for the model. * * @var string */ protected $primaryKey = ''user_id''; public $timestamps = false; }

Miembro modelo

use Illuminate/Auth/UserInterface; use Illuminate/Auth/Reminders/RemindableInterface; class Member extends Eloquent implements UserInterface, RemindableInterface { protected $table = ''members''; /** * The attributes excluded from the model''s JSON form. * * @var array */ protected $hidden = array(''member_password''); /** * Get the unique identifier for the user. * * @return mixed */ public function getAuthIdentifier() { return $this->getKey(); } /** * Get the password for the user. * * @return string */ public function getAuthPassword() { return $this->member_password; } /** * Get the e-mail address where password reminders are sent. * * @return string */ public function getReminderEmail() { return $this->email; } /** * The primary key for the model. * * @var string */ protected $primaryKey = ''member_id''; public $timestamps = false; public function users() { return $this->hasOne(''User''); } }

El modelo de miembro usa: use Illuminate / Auth / UserInterface;

<?php namespace Illuminate/Auth; interface UserInterface { /** * Get the unique identifier for the user. * * @return mixed */ public function getAuthIdentifier(); /** * Get the password for the user. * * @return string */ public function getAuthPassword(); }

Controlador

public function store() { $input = Input::all(); $rules = array(''user_email'' => ''required'', ''member_password'' => ''required''); $v = Validator::make($input, $rules); if($v->passes()) { $credentials = array(''user_email'' => $input[''user_email''], ''member_password'' => $input[''member_password'']); if(Auth::attempt($credentials)) { return Redirect::to(''/home''); } else { return Redirect::to(''login''); } } else { return Redirect::to(''login'')->withErrors($v); } }

auth.php

return array( /* |-------------------------------------------------------------------------- | Default Authentication Driver |-------------------------------------------------------------------------- | | This option controls the authentication driver that will be utilized. | This drivers manages the retrieval and authentication of the users | attempting to get access to protected areas of your application. | | Supported: "database", "eloquent" | */ ''driver'' => ''eloquent'', /* |-------------------------------------------------------------------------- | Authentication Model |-------------------------------------------------------------------------- | | When using the "Eloquent" authentication driver, we need to know which | Eloquent model should be used to retrieve your users. Of course, it | is often just the "User" model but you may use whatever you like. | */ ''model'' => ''Member'', /* |-------------------------------------------------------------------------- | Authentication Table |-------------------------------------------------------------------------- | | When using the "Database" authentication driver, we need to know which | table should be used to retrieve your users. We have chosen a basic | default value but you may easily change it to any table you like. | */ ''table'' => ''members'', /* |-------------------------------------------------------------------------- | Password Reminder Settings |-------------------------------------------------------------------------- | | Here you may set the settings for password reminders, including a view | that should be used as your password reminder e-mail. You will also | be able to set the name of the table that holds the reset tokens. | | The "expire" time is the number of minutes that the reminder should be | considered valid. This security feature keeps tokens short-lived so | they have less time to be guessed. You may change this as needed. | */ ''reminder'' => array( ''email'' => ''emails.auth.reminder'', ''table'' => ''password_reminders'', ''expire'' => 60, ), );

¿Qué estoy haciendo mal aquí?


No tiene un campo llamado user_email en la tabla de miembros ... en cuanto a por qué, no estoy seguro ya que el código "parece" que debería intentar unirse en diferentes campos

¿El método Auth :: intento realiza una combinación del esquema? Ejecute grep -Rl ''class Auth'' /path/to/framework y descubra dónde está el método de attempt y qué hace.


Intenta cambiar donde la clase de miembro

public function users() { return $this->hasOne(''User''); } return $this->belongsTo(''User'');