use*_*333 3 php authentication laravel eloquent
我创建了模型:
<?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;
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用它时:
ClientModel::create(array(
'username' => 'first_user',
'password' => Hash::make('123456'),
'email' => 'my@email.com'
));
Run Code Online (Sandbox Code Playgroud)
它在DB中创建空条目...

您正在使用create方法(批量分配),因此它不起作用,因为您有这个:
// Only user_id is allowed to insert by create method
protected $fillable = ['user_id'];
Run Code Online (Sandbox Code Playgroud)
把它放在你的模型中而不是$fillable:
// Allow any field to be inserted
protected $guarded = [];
Run Code Online (Sandbox Code Playgroud)
您也可以使用替代方法:
protected $fillable = ['username', 'password', 'email'];
Run Code Online (Sandbox Code Playgroud)
在网站上阅读有关批量分配的更多信息Laravel。虽然这可能会解决问题,但请注意。您可以改用这种方法:
$user = new User;
$user->username = 'jhondoe';
// Set other fields ...
$user->save();
Run Code Online (Sandbox Code Playgroud)
我觉得你太复杂了.没有必要这样做.默认情况下,您已User创建模型,您应该能够以这种方式创建用户:
$user = new User();
$user->username = 'something';
$user->password = Hash::make('userpassword');
$user->email = 'useremail@something.com';
$user->save();
Run Code Online (Sandbox Code Playgroud)
也许你想要实现更多目标,但如果你不在这里修改输入或输出,我不明白你在这里使用了多少方法.
现在的方式:
User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
Run Code Online (Sandbox Code Playgroud)
甚至:
$arrLcl = [];
$arrLcl['name'] = $data['name'];
$arrLcl['email'] = $data['email'];
$arrLcl['password'] = $data['password'];
User::create($arrLcl);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12109 次 |
| 最近记录: |