如何在Laravel中创建新用户?
问题描述:
我创建的模型:如何在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空项...
答
你是使用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();
答
我觉得你让它太复杂了。没有必要这样做。默认情况下,你已经User
模型创建的,你应该能够简单的创建用户这样说:
$user = new User();
$user->username = 'something';
$user->password = Hash::make('userpassword');
$user->email = '[email protected]';
$user->save();
也许你想实现更多的东西,但我不明白,你用什么这么多的方法,在这里,如果你不”在此修改输入或输出。