Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Laravel:如何在数据库中插入第一个用户_Mysql_Laravel_Laravel 4_Laravel Seeding - Fatal编程技术网

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

Mysql Laravel:如何在数据库中插入第一个用户,mysql,laravel,laravel-4,laravel-seeding,Mysql,Laravel,Laravel 4,Laravel Seeding,我正在使用Laravel(4.2) 我正在做一个有认证系统的项目。我需要在users表中插入第一个用户。我想直接用sql命令(插入到用户中…)来实现这一点。因为第一个用户不能用传统的laravel方法创建 在插入到表中之后,第一个用户将通过auth::truments方法进行标识 如何将此用户插入mysql表 什么样的 insert into users (login, password) values ('admin', 'crypted password which can be late

我正在使用Laravel(4.2)

我正在做一个有认证系统的项目。我需要在users表中插入第一个用户。我想直接用sql命令(插入到用户中…)来实现这一点。因为第一个用户不能用传统的laravel方法创建

在插入到表中之后,第一个用户将通过auth::truments方法进行标识

如何将此用户插入mysql表

什么样的

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

最合理的方法是使用DatabaseSeeder进行此类操作

我将直接使用文档中的示例:

class DatabaseSeeder extends Seeder {

    public function run()
    {
        $this->call('UserTableSeeder');

        $this->command->info('User table seeded!');
    }

}

class UserTableSeeder extends Seeder {

    public function run()
    {
        DB::table('users')->delete();

        User::create(array('login' => 'admin', 'password' => Hash::make('secret')));
    }
}
创建这样的种子机后,在
php-artisan-migrate
之后,您可以运行
php-artisan-db:seed
并创建第一个用户

参考资料:

我是这样做的:

使用artisan创建播种机:

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中,取消注释或外接程序运行函数中的一行:

$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);
    }
}
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");
}
在运行结束时:

php artisan db:seed

我希望你能帮助别人。
PS:这是在Laravel5.3上完成的,使用php artisan tinker工具,我们可以直接向数据库添加新用户

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

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

见Laravel文件:

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

use Illuminate\Database\Seeder;

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

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

有关密码,请在终端中打开项目的根目录

然后运行
php工匠修补程序


然后
echo Hash::make('password')

将以下值放入
.env
文件中

INITIAL\u USER\u PASSWORDHASH
bcrypt,必须由用户生成

您可以将其用作在线生成器工具,在应用程序之外创建密码

您的应用程序应该提供一种更简单的方法

您不想将明文密码保存在
env
文件中

INITIAL_USER_NAME=
INITIAL_USER_EMAIL=
INITIAL_USER_PASSWORDHASH=
然后,如使用播种机前的其他答案所示:

要使用
composer
生成播种机,需要使用以下
artiasn
命令

php artisan make:seeder UsersTableSeeder

此命令将创建位于
数据库/seeds
文件夹中的播种器文件

<?php

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
  /**
   * Run the database seeds.
   *
   * @return void
   */
  public function run()
  {
    DB::table('users')->insert([
      'name' => env('INITIAL_USER_NAME'),
      'email' => env('INITIAL_USER_EMAIL'),
      'password' => env('INITIAL_USER_PASSWORDHASH'),
    ]);
  }
}
建议您在保存更改后运行
composer dump autoload
命令

通过运行
artisan
命令,可以运行
DatabaseSeeder.php
文件中的所有种子

php artisan db:seed

您也可以通过执行
php artisan db:seed--class=“userstableeder”
命令,使用以下命令仅执行一个种子程序


您还可以使用php artisan migrate:fresh--seed对数据库表进行新的迁移,并在单个命令中为表设置种子。

在Laravel 5.6.39中,我执行以下操作:

$user = new App\User();
$user->name = 'dhrubo';       //write whatever name you want
$user->password = Hash::make('dhrubo');    // write the password you want
$user->email = 'dhrubo@gmail.com';        // write the email you want
$user->save();

是否要从
Laravel
中执行SQL
?如果不是,为什么您不从
phpMyAdmin
MySql控制台执行
SQL
。Laravel与路由、控制器和模型一起工作我想您在查询数据库之前已经设置好了它们Franco:不,我还没有所有这些要求。对于其他用户,我当然会有。但是对于第一个,如何将其创建到数据库中?仅在
LaravelV5.6.17
中使用。谢谢@Casper谢谢,知道它在新的Laravel版本中也能工作是很有用的:)不总是用标准密码插入标准用户不是更好吗?比如说,我在写开源软件,这将是一个安全风险,因为很多用户不会改变它。我会提供一个新的答案。@martin eckleben,我认为最好插入散列密码,你不觉得吗?“$2y$10$KZ4JiywQx2e0AMd.RWBd.ONSUcfsE1Jj0dYURgGq0BIwigMAQEYuK”@Eleazar Resendez-hmm更好,但仍然不适合同样的论点。假设我写了一个开源软件,其他人只是在使用和使用一个标准的pw->可能没有人会注意到/改变这一点,很多系统都可以使用标准的pw进行攻击。我认为对于安全标准,pws总是一个糟糕的方法。使用标准pws查看所有可攻击的设备/路由器/防火墙等。要创建
初始用户\u密码哈希
,请参阅@despotbg answer。