如何在 Laravel 中创建新用户?

Posted

技术标签:

【中文标题】如何在 Laravel 中创建新用户?【英文标题】:How to create new user in Laravel? 【发布时间】:2014-11-16 04:55:44 【问题描述】:

我创建了模型:

<?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'    => 'my@email.com'
));

它在数据库中创建空条目...

【问题讨论】:

【参考方案1】:

我认为你把它弄得太复杂了。没有必要这样做。默认情况下,您已创建 User 模型,您应该可以通过这种方式简单地创建用户:

$user = new User();
$user->username = 'something';
$user->password = Hash::make('userpassword');
$user->email = 'useremail@something.com';
$user->save();

也许您想实现更多目标,但如果您不在这里修改输入或输出,我不明白您在这里使用了这么多方法。

【讨论】:

【参考方案2】:

您正在使用create 方法(批量分配)所以它不起作用,因为您有这个:

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

把它放在你的模型中,而不是$fillable

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

您也可以使用替代方法:

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

Laravel 网站上阅读有关Mass Assignment 的更多信息。虽然这可能会解决问题,但请注意这一点。您可以改用这种方法:

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

【讨论】:

【参考方案3】:

现在的方式:

User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);

甚至:

        $arrLcl = [];
        $arrLcl['name'] = $data['name'];
        $arrLcl['email'] = $data['email'];
        $arrLcl['password'] = $data['password'];
        User::create($arrLcl);

【讨论】:

以上是关于如何在 Laravel 中创建新用户?的主要内容,如果未能解决你的问题,请参考以下文章

如何只允许特定用户在 Firebase 中创建新用户?

为啥我的新用户无法在 SQL Developer 中创建新连接?

在 Mac OS 中创建新用户组 [关闭]

无法编写用于在数据库中创建新用户的 GraphQL Mutation

在 Keycloak 中创建新用户期间未分配客户端角色

在 shell 中创建新的管理员 webmin 用户 [关闭]