Laravel php artisan db:seed 导致“use”语句错误
Posted
技术标签:
【中文标题】Laravel php artisan db:seed 导致“use”语句错误【英文标题】:Laravel php artisan db:seed leads to "use" statement error 【发布时间】:2015-09-14 07:11:37 【问题描述】:当我尝试运行 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'
]);
【问题讨论】:
【参考方案1】:在 PHP 中,use 语句更像是一个别名,而不是 import。因此,由于 ClassesTableSeeder 类不在定义的命名空间中,因此您不需要导入 DB 类。因此,您可以完全删除 use DB。
【讨论】:
为什么 Laravel Docs 有使用 DB? laravel.com/docs/5.1/seeding#writing-seeders 可能只是文档中的一个小故障。如果你不使用命名空间,你当然不需要导入任何东西。 感谢您的帮助【参考方案2】:使用以下代替use DB
use Illuminate\Support\Facades\DB;
【讨论】:
请在您的答案中添加一些解释,以便其他人可以从中学习,特别是如果某个问题已经包含一些旧的且被高度评价的答案【参考方案3】:在种子类中你不需要在页面顶部声明use DB
。写在 config>app.php
别名数组中的任何别名都不需要 use
语句。这是因为播种机没有任何命名空间。
【讨论】:
【参考方案4】:在 laravel 迁移中你不需要调用 DB ;
删除use DB;
【讨论】:
【参考方案5】:使用以下内容代替use DB
。
use DB as DBS;
之后,你可以如下使用它。
DBS::table('foo')->insert([
'name'=>'bar',
]);
【讨论】:
以上是关于Laravel php artisan db:seed 导致“use”语句错误的主要内容,如果未能解决你的问题,请参考以下文章
php Laravel Artisan Migrate创建领域
laravel 自动删除 php artisan serve 上的 server.php