【问题标题】:How to create new user in Laravel?如何在 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'
));

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

【问题讨论】:

    标签: php authentication laravel eloquent


    【解决方案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);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-08-01
          • 2016-12-08
          • 2019-02-03
          • 1970-01-01
          • 2018-10-15
          • 2023-04-02
          • 2016-07-11
          • 2015-01-14
          相关资源
          最近更新 更多