我正在使用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上完成的
我是这样做的:
用工匠创造播种机:
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上完成的
对于密码,请在项目根目录下打开终端。然后写php artisan tinker
。然后echo Hash::make('password');
如果您担心将文本格式的用户密码不安全地保存到存储库或服务器,我建议您创建一个命令来为您创建用户.
请参阅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"); }
然后,您可以从服务器运行命令,并且您没有以基于文本的格式存储任何内容!
将所需的值放在.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
在网站上找到解决方案
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();