在Laravel中手动注册用户


Answers:


136

我认为您想一次性执行此操作,因此不需要像创建Artisan命令之类的东西。我建议简单地使用php artisan tinker(出色的工具!)并为每个用户添加以下命令:

$user = new App\User();
$user->password = Hash::make('the-password-of-choice');
$user->email = 'the-email@example.com';
$user->name = 'My Name';
$user->save();

3
不,这不是工匠命令。这是使用工匠命令。
Christoffer Tyrefors,2016年

1
是的,这很漂亮。谢谢。@ maiorano84这是L5中的这个包(laravel / framework / composer.json)github.com/bobthecow/psysh
Francesco de Guytenaere 2016年

6
如果您的项目也需要名称,请在该行$user->name = 'John Doe';之前使用该save()行。
Celsius1414

您可能还需要在$user->username = 'my username'; 之前设置用户名$user->save()
WesleyGonçalves19年

由于某些原因,我无法使用通过Tinker插入的数据登录... Guard不会让我进入,密码不匹配。有任何想法吗?
Wirone

24

这是一个古老的文章,但是如果有人想在Laravel 5. *中使用命令行来完成它,这是一个简单的方法:

php artisan tinker

然后输入(替换为您的数据):

DB::table('users')->insert(['name'=>'MyUsername','email'=>'thisis@myemail.com','password'=>Hash::make('123456')])

8

是的,最好的选择是创建一个播种器,以便您始终可以重复使用它。

例如,这是我的UserTableSeeder

class UserTableSeeder extends Seeder {

public function run() {

    if(env('APP_ENV') != 'production')
    {
        $password = Hash::make('secret');

        for ($i = 1; $i <= 10; $i++)
        {
            $users[] = [
                'email' => 'user'. $i .'@myapp.com',
                'password' => $password
            ];
        }

        User::insert($users);
    }
}

创建此播种器之后,必须运行composer dumpautoload,然后在其中database/seeds/DatabaseSeeder.php添加以下内容:

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Model::unguard();

        $this->call('UserTableSeeder');
     }
}

现在,您终于可以在php artisan db:seed --class=UserTableSeeder每次需要在表中插入用户时使用了。


我的laravel版本是5.4,不需要“ composer dumpautoload”,甚至不需要在DatabaseSeeder中调用UserTableSeeder。刚使用命令“PHP人员分贝:种子--class = UserTableSeeder”建立类“UserTableSeeder”为你的后..
Avnish阿洛克

1
2016
user2094178

1
只需注意一下,如果您正在使用这样的播种器(旨在重用),则使用此解决方案时,大多数情况下您将以明文形式将密码存储在git repo中。请谨慎处理,并将您的密码提取到环境变量中。
肖恩·霍尔斯


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.