2017-09-23 177 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()这样的函数,所有你可以按照我在回答中编辑过的简单而直接的方法 –

相关问题