복붙노트

[SQL] SQLSTATE는 [42S22] : 열을 찾을 수 없습니다 : 1054 알 수없는 열 - Laravel

SQL

SQLSTATE는 [42S22] : 열을 찾을 수 없습니다 : 1054 알 수없는 열 - Laravel

나는 프레임 워크 Laravel을 사용하고 있습니다.

나는 2 개 테이블 (사용자 및 회원)이있다. 내가 로그인 할 때, 나는 오류 메시지가 :

표 사용자

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;

표 회원

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;

마이그레이션 사용자

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');
        });
    }

마이그레이션 회원

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');
        });
    }

모델 사용자

class User extends Eloquent {

    protected $table = 'users';

    /**
     * The primary key for the model.
     *
     * @var string
     */
    protected $primaryKey = 'user_id';

    public $timestamps = false;
}

모델 회원

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');
    }
}

회원 모델 사용 : 를 분명히 \ 인증 \ 후 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();

}

제어 장치

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

창 어레이 (     / *     | ------------------------------------------------- -------------------------     | 인증 드라이버를 기본     | ------------------------------------------------- -------------------------     |     | 이 옵션을 사용합니다 인증 드라이버를 제어합니다.     | 이 드라이버는 사용자의 검색 및 인증을 관리     | 응용 프로그램의 보호 지역에 접근을 시도.     |     | 지원 : "데이터베이스", "설득력"     |     * /     '드라이버'=> '웅변'     / *     | ------------------------------------------------- -------------------------     | 인증 모델     | ------------------------------------------------- -------------------------     |     | 은 "설득력"인증 드라이버를 사용하는 경우, 우리는 알 필요가있는     | 웅변 모델은 사용자를 검색하는 데 사용되어야한다. 물론, 그것을     | 종종 그냥 "사용자"모델입니다하지만 당신은 당신이 원하는대로 사용할 수 있습니다.     |     * /     '모델'=> '회원'     / *     | ------------------------------------------------- -------------------------     | 인증 표     | ------------------------------------------------- -------------------------     |     | "데이터베이스"인증 드라이버를 사용하는 경우, 우리는 알 필요가있는     | 테이블은 사용자를 검색하는 데 사용되어야한다. 우리는 기본을 선택한     | 값을 기본하지만 당신은 쉽게 같은 모든 테이블 당신에게 그것을 변경 될 수 있습니다.     |     * /     '테이블'=> '회원'     / *     | ------------------------------------------------- -------------------------     | 암호 알림 설정     | ------------------------------------------------- -------------------------     |     | 여기에 당신은보기를 포함하여, 암호 알림에 대한 설정을 설정할 수 있습니다     | 그 비밀번호 알림 메일로 사용되어야한다. 또한 것이다     | 리셋 토큰을 보유하고있는 테이블의 이름을 설정할 수 있습니다.     |     | 은 "만료"시간은 알림이해야하는 시간 (분)입니다     | 유효한 것으로 간주. 이 보안 기능은 토큰이 너무 단명 유지     | 그들은 더 적은 시간을 추측해야합니다. 필요에 따라 변경할 수 있습니다.     |     * /     '주지 사항'=> 어레이 (         '이메일'=> 'emails.auth.reminder'         "테이블"=> 'password_reminders'         '만료'=> 60     ), ); 어떻게 내가 여기 잘못 한거야?

해결법

  1. ==============================

    1.당신은 인증을 위해 auth.php 및 사용 회원 테이블을 구성했지만 그래서 회원 테이블에 USER_EMAIL 필드가없는, Laravel 말한다

    당신은 인증을 위해 auth.php 및 사용 회원 테이블을 구성했지만 그래서 회원 테이블에 USER_EMAIL 필드가없는, Laravel 말한다

    때문에 회원 테이블의 USER_EMAIL 일치하도록 시도하고 거기 아니에요. 사용자 인증 구성에 따르면, laravel 인증되지 사용자 테이블에 대한 회원 테이블을 사용하고 있습니다.

  2. ==============================

    2.당신은 회원 테이블의 필드 이름 USER_EMAIL이없는 ... 난 이유에 관해서는 확실하지 그것과 같은 코드 "외모는"다른 분야에 참여하도록해야으로

    당신은 회원 테이블의 필드 이름 USER_EMAIL이없는 ... 난 이유에 관해서는 확실하지 그것과 같은 코드 "외모는"다른 분야에 참여하도록해야으로

    [인증 :: 시도 방법은 스키마의 조인을 수행합니까? 실행 그렙 -rl '클래스 인증'/ 경로 / 프레임 워크 /와 시도 방법이고 그것이 무엇을 어디에서 찾을 수 있습니다.

  3. ==============================

    3.변경하려고 할 경우 회원 등급

    변경하려고 할 경우 회원 등급

    public function users() {
        return $this->hasOne('User');
    } 
    
    return $this->belongsTo('User');
    
  4. from https://stackoverflow.com/questions/20711253/sqlstate42s22-column-not-found-1054-unknown-column-laravel by cc-by-sa and MIT license