2014-09-22 134 views
2

我创建的模型:如何在Laravel中创建新用户?

<?php 
use Illuminate\Auth\UserInterface; 
use Illuminate\Auth\Reminders\RemindableInterface; 

class ClientModel extends Eloquent implements UserInterface, RemindableInterface { 

    protected $connection = 'local_db'; 
    protected $table  = 'administrators'; 
    protected $fillable = ['user_id']; 

    public function getAuthIdentifier() 
    { 
     return $this->username; 
    } 

    public function getAuthPassword() 
    { 
     return $this->password; 
    } 

    public function getRememberToken() 
    { 
     return $this->remember_token; 
    } 

    public function setRememberToken($value) 
    { 
     $this->remember_token = $value; 
    } 

    public function getRememberTokenName() 
    { 
     return 'remember_token'; 
    } 

    public function getReminderEmail() 
    { 
     return $this->email; 
    } 
} 

当我尝试使用这样的:

ClientModel::create(array(
    'username' => 'first_user', 
    'password' => Hash::make('123456'), 
    'email' => '[email protected]' 
)); 

它创造了DB空项...

enter image description here

回答

1

你是使用create方法(质量分配),所以它不工作,因为你有这个:

// Only user_id is allowed to insert by create method 
protected $fillable = ['user_id']; 

在你的模型将这个代替$fillable

// Allow any field to be inserted 
protected $guarde = []; 

您也可以使用替代:

protected $fillable = ['username', 'password', 'email']; 

阅读Laravel网站更多Mass Assignment。虽然这可能会解决这个问题,但要意识到这一点。你也可以用这种方法代替:

$user = new User; 
$user->username = 'jhondoe'; 
// Set other firlds ... 
$user->save(); 
3

我觉得你让它太复杂了。没有必要这样做。默认情况下,你已经User模型创建的,你应该能够简单的创建用户这样说:

$user = new User(); 
$user->username = 'something'; 
$user->password = Hash::make('userpassword'); 
$user->email = '[email protected]'; 
$user->save(); 

也许你想实现更多的东西,但我不明白,你用什么这么多的方法,在这里,如果你不”在此修改输入或输出。