2017-09-23 1 views
1

새 프로젝트에 Laravel 등록을하고 오류 SQLSTATE [HY000] : 일반 오류 : 1364 '로그인'필드에 기본값이 없습니다 (SQL : users() 값()에 삽입하십시오) 여기 내 코드입니다. 보기 :SQLSTATE [HY000] : 일반 오류 : 1364 'login'필드에 기본값이 없습니다 (SQL : 사용자에 값 삽입())

@extends('app') 

@section('content') 

<h1>Регистрация</h1> 

<form action="/user/" method="post"> 
    {{ csrf_field() }} 
    <div class="form-group"> 
     <label for="email">Email</label> 
     <input type="text" class="form-control" id="email" name="email"> 
    </div> 
    <div class="form-group"> 
     <label for="login">Login</label> 
     <input type="text" class="form-control" name="login"> 
    </div> 
    <div class="form-group"> 
     <label for="password">Password</label> 
     <input type="password" class="form-control" id="password" name="password"> 
    </div> 
    <div class="form-group"> 
     <label for="password-repeat">Repeat password</label> 
     <input type="password" class="form-control" id="password-repeat" name="password-repeat"> 
    </div> 
    <button type="submit" class="btn btn-default">Регистрация</button> 
</form> 

@stop 

컨트롤러 :

public function create() 
{ 
    $userConstuctor['login'] = Request::input('login'); 
    $userConstuctor['password'] = Request::input('password'); 
    $user = new User($userConstuctor); 
    $user->setUser(Request::all()); 
    $user->save(); 
} 

모델 :

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 
use Session; 

class User extends Model 
{ 
const ADMIN = 1; 
const MANAGER = 2; 
const USER = 3; 

public $login; 
public $password; 
private $email; 
private $firstName; 
private $secondName; 
private $lastName; 
private $avatar; 
private $userOptions = []; 
private $createdDate; 
private $rememberToken; 
private $active; 
private $groupId; 
public $timestamps = false; 
protected $fillable = ['login', 'password', 'email', 'created_date', 'remember_token', 'active', 'group_id']; 
protected $table = 'users'; 

public function __construct($userConstuctor) 
{ 
    $this->setLogin($userConstuctor['login']); 
    $this->setPassword($userConstuctor['password']); 
} 

public function setUser($user) 
{ 
    $this->setEmail($user['email']); 
    $this->setCreatedDate(); 
    $this->setRememberToken($user['_token']); 
    $this->setActive(); 
    $this->setGroupId(); 
} 

private function setLogin($login) 
{ 
    $this->login = $login; 
} 

private function setPassword($password) 
{ 
    $this->password = md5($password); 
} 

private function setEmail($email) 
{ 
    $this->email = $email; 
} 

private function setCreatedDate() 
{ 
    $this->createdDate = date('Y-m-d H:i:s'); 
} 

private function setRememberToken($token) 
{ 
    $this->rememberToken = $token; 
} 

private function setActive() 
{ 
    $this->active = false; 
} 

private function setGroupId() 
{ 
    $this->groupId = self::USER; 
} 

} 

테이블 스키마 :

Schema::create('users', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('login')->unique(); 
     $table->string('email')->unique(); 
     $table->string('password'); 
     $table->string('first_name')->nullable(); 
     $table->string('second_name')->nullable(); 
     $table->string('last_name')->nullable(); 
     $table->string('avatar', 250)->nullable(); 
     $table->longText('user_options')->nullable(); 
     $table->timestamp('created_date'); 
     $table->boolean('active'); 
     $table->rememberToken('token'); 
     $table->integer('group_id'); 
    }); 

내가 dd()에서 가져온 응답 : - http://joxi.net/823WMQ4f647LX2

+0

당신이 create' 방법'호출하는 방법? 경로도 공유 할 수 있습니까? – C2486

+0

var_dump (Request :: input ('login'))는 나를 보여줍니다 : string (5) "romka" 죄송합니다, 여기에 코드를 너무 많이 넣는 법을 모르겠습니다. 그래서 나는 dd ($ 사용자) 내가 그것을 저장하려고 시도하기 전에 http://joxi.ru/823WMQ4f647LX2 – fruiting

답변

0

쿼리에 테이블 에 삽입 할 내용이 없기 때문에이 오류가 발생합니다. 또한 하나 이상의 컨트롤러에서 사용자를 생성해야합니까?

는 시도이

public function create(Request $request) 
{ 
    $userConstuctor['login'] = $request->login; 
    $userConstuctor['password'] = $request->password; 
    $user = new User(); 
    $user->login = $request->login; 
    $user->password = $request->password; 
/*and so on....*/ 
    $user->save(); 
} 
+0

코드를 시도했지만 여전히 동일한 오류가 있습니다. 한 컨트롤러에서 사용자를 만들고 다른 컨트롤러 및 관리자를 만들고 싶습니다. – fruiting

+0

당신에게 많은 영향을 주며 setUser()와 같은 함수를 사용할 필요가 없으며 내 대답에서 편집 한 것처럼 간단하고 직선적 인 방법을 따를 수 있습니다 –