2017-09-23 178 views
1

我在Laravel上的新項目上註冊並獲取錯誤 SQLSTATE [HY000]:一般錯誤:1364字段'登錄'沒有默認值(SQL:插入到users()值()) 這是我的代碼。 查看:SQLSTATE [HY000]:一般錯誤:1364字段'login'沒有默認值(SQL:insert into`users`()values())

@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'))顯示我:字符串(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

如果它doesn對你沒有什麼影響,也沒有必要使用像setUser()這樣的函數,所有你可以按照我在回答中編輯過的簡單而直接的方法 –

相關問題