当前位置:  开发笔记 > 编程语言 > 正文

Laravel:如何在数据库中插入第一个用户

如何解决《Laravel:如何在数据库中插入第一个用户》经验,为你挑选了5个好方法。

我正在使用Laravel(4.2)

我正在开发一个带有身份验证系统的项目.我需要将第一个用户插入到我的users表中.我想直接使用sql命令(插入用户....).因为无法使用传统的laravel方法创建第一个用户.

在插入表格后,第一个用户将使用auth :: attempts方法进行识别.

如何将此用户插入mysql表?

就像是?

insert into  users (login, password) values ('admin', 'crypted password which can be later identified with laravel')

Angel M... 44

我是这样做的:

用工匠创造播种机:

php artisan make:seeder UsersTableSeeder

然后你打开文件然后输入用户:

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('users')->insert([
            'name' => 'User1',
            'email' => 'user1@email.com',
            'password' => bcrypt('password'),
        ]);
        DB::table('users')->insert([
            'name' => 'user2',
            'email' => 'user2@email.com',
            'password' => bcrypt('password'),
        ]);
    }
}

如果要生成随机用户列表,可以使用工厂:

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        factory(App\User::class, 50)->create();
        /* or you can add also another table that is dependent on user_id:*/
       /*factory(App\User::class, 50)->create()->each(function($u) {
            $userId = $u->id;
            DB::table('posts')->insert([
                'body' => str_random(100),
                'user_id' => $userId,
            ]);
        });*/
    }
}

然后在文件app/database/seeds/DatabaseSeeder.php中取消注释或在run函数中添加一行:

$this->call(UsersTableSeeder::class);

它看起来像这样:

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $this->call(UsersTableSeeder::class);
    }
}

最后你运行:

php artisan db:seed

要么

php artisan db:seed --class=UsersTableSeeder

我希望能帮助别人.PS:这是在Laravel 5.3上完成的



1> Angel M...:

我是这样做的:

用工匠创造播种机:

php artisan make:seeder UsersTableSeeder

然后你打开文件然后输入用户:

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('users')->insert([
            'name' => 'User1',
            'email' => 'user1@email.com',
            'password' => bcrypt('password'),
        ]);
        DB::table('users')->insert([
            'name' => 'user2',
            'email' => 'user2@email.com',
            'password' => bcrypt('password'),
        ]);
    }
}

如果要生成随机用户列表,可以使用工厂:

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        factory(App\User::class, 50)->create();
        /* or you can add also another table that is dependent on user_id:*/
       /*factory(App\User::class, 50)->create()->each(function($u) {
            $userId = $u->id;
            DB::table('posts')->insert([
                'body' => str_random(100),
                'user_id' => $userId,
            ]);
        });*/
    }
}

然后在文件app/database/seeds/DatabaseSeeder.php中取消注释或在run函数中添加一行:

$this->call(UsersTableSeeder::class);

它看起来像这样:

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $this->call(UsersTableSeeder::class);
    }
}

最后你运行:

php artisan db:seed

要么

php artisan db:seed --class=UsersTableSeeder

我希望能帮助别人.PS:这是在Laravel 5.3上完成的


刚在'Laravel v5.6.17`中使用过它.谢谢!

2> despotbg..:

对于密码,请在项目根目录下打开终端。然后写php artisan tinker。然后echo Hash::make('password');



3> Jammer..:

如果您担心将文本格式的用户密码不安全地保存到存储库或服务器,我建议您创建一个命令来为您创建用户.

请参阅Laravel文档:https://laravel.com/docs/5.6/artisan#generating-commands

在handle方法中添加如下内容:

public function handle()
{
    $first_name = $this->ask('What is the first name?');
    $last_name = $this->ask('What is the last name?');
    $email = $this->ask('What is the email address?');
    $password = $this->secret('What is the password?');

    AdminUser::create([
        'first_name' => $first_name,
        'last_name' => $last_name,
        'email' => $email,
        'password' => bcrypt($password)
    ]);

    $this->info("User $first_name $last_name was created");
}

然后,您可以从服务器运行命令,并且您没有以基于文本的格式存储任何内容!



4> Martin Eckle..:

将所需的值放在.env文件中。
INITIAL_USER_PASSWORDHASH是bcrypt,必须由用户以某种方式生成。
您的应用程序应该提供一种简单的方法。

您不想在该文件中保存明文pws。
否则,您首先要取消将其保存在数据库的bcrypt中。

INITIAL_USER_NAME=
INITIAL_USER_EMAIL=
INITIAL_USER_PASSWORDHASH=

然后,按照其他答案的建议,在使用播种机之前:
php artisan make:seeder UsersTableSeeder

insert([
      'name' => env('INITIAL_USER_NAME'),
      'email' => env('INITIAL_USER_EMAIL'),
      'password' => env('INITIAL_USER_PASSWORDHASH'),
    ]);
  }
}

然后,您应该在文件database / seeds / DatabaseSeeder.php中输入种子,以便在每次完整种子运行中都调用它:

call([
        UsersTableSeeder::class
      ]);
    }
}

然后:
composer dump-autoload

最后是一个手动种子调用:
php artisan db:seed



5> Selestin Tho..:

在网站上找到解决方案

http://connectonline.in/add-new-user-to-laravel-database/

请检查上面的网址,

使用php artisan tinker工具,我们可以将新用户直接添加到数据库.

$user = new App\User();
$user->password = Hash::make('password here ');
$user->email = 'proposed email@addresss.com';
$user->save();

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有