web-dev-qa-db-ja.com

Laravel:データベースに最初のユーザーを挿入する方法

私は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')
16
Dom

私はそれをこのようにやっています:

職人によるシーダーの作成:

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' => '[email protected]',
            'password' => bcrypt('password'),
        ]);
        DB::table('users')->insert([
            'name' => 'user2',
            'email' => '[email protected]',
            '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);
    }
}

最後に実行します:

php artisan db:seed

または

php artisan db:seed --class=UsersTableSeeder

私は誰かを助けることを願っています。 PS:これはLaravel 5.3で行われました

39
Angel M.

パスワードについては、プロジェクトのルートでターミナルを開きます。次に、_php artisan tinker_と記述します。次にecho Hash::make('password');

10
despotbg

ユーザーのパスワードをテキスト形式でリポジトリまたはサーバーに安全に保存するのが気になる場合は、ユーザーを作成するコマンドを作成することをお勧めします。

Laravel docs: https://laravel.com/docs/5.6/artisan#generated-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");
}

その後、サーバーからコマンドを実行できますが、テキストベースの形式で何も保存していません。

6
Jammer

.envファイルに必要な値を入れます。
INITIAL_USER_PASSWORDHASHはbcryptであり、ユーザーが何らかの方法で生成する必要があります。
アプリケーションは簡単な方法を提供する必要があります。

そのファイルに平文のpwsを保存する必要はありません。
それ以外の場合は、最初にデータベースのbcryptに保存することを無効にします。

INITIAL_USER_NAME=
INITIAL_USER_EMAIL=
INITIAL_USER_PASSWORDHASH=

次に、シーダーを使用する前に他の回答で提案されているように:
php artisan make:seeder UsersTableSeeder

<?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'),
    ]);
  }
}

その後、ファイルdatabase/seeds/DatabaseSeeder.phpにシードを入力して、すべての完全なシード実行で呼び出されるようにする必要があります。

<?php

use Illuminate\Database\Seeder;

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

次に:
composer dump-autoload

最後に、手動シードコールが1つあります。
php artisan db:seed

5
Martin Eckleben

ウェブサイトで解決策を見つける

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

上記のURLを確認してください。

PHPアーティザンティンカーツールを使用すると、データベースに新しいユーザーを直接追加できます。

$user = new App\User();
$user->password = Hash::make('password here ');
$user->email = 'proposed [email protected]';
$user->save();
5
Selestin Thomas

最も合理的な方法は、そのようなアクションに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と最初のユーザーが作成されます

参照: Laravelのデータベースシーディング

3

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 = '[email protected]';        // write the email you want
$user->save();
1
Dhrubo Saha