尝试在laravel中使用seeder时,如何解决该问题?

时间:2020-07-21 05:03:55

标签: php database laravel laravel-seeding

我正在尝试在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);
    }
}

1 个答案:

答案 0 :(得分:1)

您的DatabaseSeeder不在专用的命名空间中;它在全局名称空间中。因此,您无需use也位于全局名称空间中的任何其他类。

由于SuperAdminSeeder也在全局命名空间中,因此use SuperAdminSeeder;中的DatabaseSeeder语句不会执行任何操作(除了会导致错误)。

删除use SuperAdminSeeder;语句。