私は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')
私はそれをこのようにやっています:
職人によるシーダーの作成:
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で行われました
パスワードについては、プロジェクトのルートでターミナルを開きます。次に、_php artisan tinker
_と記述します。次にecho Hash::make('password');
ユーザーのパスワードをテキスト形式でリポジトリまたはサーバーに安全に保存するのが気になる場合は、ユーザーを作成するコマンドを作成することをお勧めします。
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");
}
その後、サーバーからコマンドを実行できますが、テキストベースの形式で何も保存していません。
.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
ウェブサイトで解決策を見つける
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();
最も合理的な方法は、そのようなアクションに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 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();