我正在使用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')
答案 0 :(得分:35)
我这样做:
用工匠创造播种机:
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 :(得分:7)
对于密码,请打开项目根目录下的终端。
然后写php artisan tinker
。
然后echo Hash::make('password');
答案 2 :(得分:5)
在网站上找到解决方案
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();
答案 3 :(得分:5)
如果您担心将文本格式的用户密码不安全地保存到存储库或服务器,我建议您创建一个命令来为您创建用户。
请参阅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 :(得分:5)
将所需的值放在.env文件中。
INITIAL_USER_PASSWORDHASH是bcrypt,必须由用户以某种方式生成。
您的应用程序应该提供一种简单的方法。
您不想在该文件中保存明文密码。
否则,您首先需要将其保存在数据库的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
最后是一个手动种子调用:
php artisan db:seed
答案 5 :(得分:3)
最合理的方法是使用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
并创建第一个用户
答案 6 :(得分:0)
在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();