【发布时间】:2020-11-10 10:23:46
【问题描述】:
我正在尝试在我的 laravel 项目中添加一个超级用户。我有,但错误发生了。
The use statement with non-compound name 'SuperAdminSeeder' has no effect", "E:\github\LARAVEL\Deal-Ocean\database\seeds\DatabaseSeeder.php", ["E:\github\LARAVEL\Deal-Ocean\vendor\composer/../../database/seeds/DatabaseSeeder.php"]
SuperAdminSeeder.php
<?php
use App\Role;
use App\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class SuperAdminSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$role = Role::create(['name' => 'super_admin']);
$user = User::create(['email' => 'imrulhasan273@email.com', 'imrulhasan' => bcrypt('secret')]);
DB::table('role_user')->insert(['user_id' => $user->id, 'role_id' => $role->id]);
}
}
在上面的查询中,我正在创建一个具有 id 名称和角色的超级用户。并在数据透视表中创建他们的 role_id 和 user_id。
DatabaseSeeder.php
<?php
use SuperAdminSeeder;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
// $this->call(UserSeeder::class);
$this->call(SuperAdminSeeder::class);
}
}
【问题讨论】:
-
删除
use SuperAdminSeeder;行,运行composer dumpautoload以确保然后再试一次;) -
我猜,
Migrations和Seeders不使用PSR-4自动加载。他们require来自各个文件夹的文件。因此,您可以从顶部删除use SuperAdminSeeder语句。 -
谢谢。这个问题解决了可能是..但是另一个异常来了“ PDOException::("SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value")” 这是我的角色表``` Schema ::create('roles', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('display_name'); $table->timestamps (); });```
-
'imrulhasan' => bcrypt('secret')应该是'password' => bcrypt('secret')吗?你的表中有一个名为imrulhasan的列吗?另外,您需要为您的用户添加一个name -
谢谢大家...问题解决了...谢谢大家
标签: php database laravel laravel-seeding