Laravel php artisan db:seed 导致 "use" 语句错误

Laravel php artisan db:seed leads to "use" statement error

当我尝试 运行 php artisan db:seed 时,出现以下错误:

The use statement with non-compound name 'DB' has no effect

我已经根据 snippet from the doc 编写了我自己的播种器文件,并将其包含在下面。如您所见,我正在使用 use DB 快捷方式 - 这就是问题所在吗?

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use DB;

class ClassesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('classes')->delete();
        DB::table('classes')->insert([
            'class_name'    => 'Test course 111',
            'class_id'      => '1',
            'location_name' => 'Barnes',
            'location_id'   => '1',
            'date'          => '2015-06-22',
            'month'         => '06/2015',
            'start_time'    => '08:00',
            'end_time'      => '16:00',
            'places'        => '19',
            'places_left'   => '19',
            'price'         => '155.00'
        ]);
    }
}

在 PHP 中,use 语句更像是一个 alias 而不是导入。因此,由于 ClassesTableSeeder class 不在定义的命名空间中,因此您不需要导入数据库 class。因此,您可以完全删除 use DB

在播种机中 class 您不需要 use DB 在页面顶部声明。在 config>app.php 别名数组中写入的任何别名都不需要 use 语句。这是因为 seeder 没有任何命名空间。

在 laravel 迁移中您不需要调用数据库;

移除use DB;

使用以下内容代替 use DB

use DB as DBS;

之后就可以按如下方式使用了

DBS::table('foo')->insert([
            'name'=>'bar',
        ]);

使用以下代替 use DB

use Illuminate\Support\Facades\DB;