欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Laravel php artisan db:seed leads to “use” statement error


When I try to runphp artisan db:seedI get the following error:

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

I have written my own seeder file which I have included below, based on asnippet from the doc. As you can see I am using theuse DBshortcut - is this what the problem is?

<?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'
        ]);
    }
}
shareimprove this question
 

1 Answer 正确答案

In PHP theusestatement is more of analiasthan import. So since theClassesTableSeederclass isn't in a defined namespace, you don't need to import the DB class. As a result you can removeuse DBentirely. 它的意思是上面不应该使用 use DB; 吧

shareimprove this answer
 
  
Thank you, silly me :)V4n1ll4Jun 27 '15 at 13:49
  
Why is it that the Laravel Docs have use DB?laravel.com/docs/5.1/seeding#writing-seedersAndrewSep 1 '15 at 1:08
1 
Probably just a glitch in the docs. You certainly don't need to import anything if you're not using a namespace.user2479930Sep 2 '15 at 12:45

来自 https://stackoverflow.com/questions/31088292/laravel-php-artisan-dbseed-leads-to-use-statement-error

PHP别名引用错误:“The use statement with non-compound name … has no effect”

原创 2014年07月27日 22:05:07
别名概述

PHP5.3+支持命名空间:namespace,命名空间的一个重要功能是可以使用别名(alias)来引用一个符合规则的名字。

命名空间支持3中形式的别名引用(或称之为引入)方式:类(class)别名,接口(interface)别名和命名空间(namespace)名字别名。

PHP5.6+还支持函数别名和常量别名。

(注:php.net 网站上关于别名这一段的中文描述有歧义和错误,更正如上)

具体语法格式

use xxx\xxx\xxx as xx;

所以use语句实际上是一种别名引用,而不是通常的import。那么use后面出现的名称就得是符合规则的别名。

错误及原因

现在再来看类似文章标题中的错误信息:

“The use statement with non-compound name … has no effect”

我们就能明白这个错误信息指的是use语句中出现的名称不是复合名称,不符合规则,所以“没有用”。

检查你的语句是不是直接在use后面跟上了类或接口的名字,比如

use News;

修改为:

use YourNameSpace\News; (这个和use YourNameSpace\News as News是一样的)

如果是Yii2框架,那么通常数据模型的别名引用类似如下:

use app\models\News;

如果是Laravel,由于在Composer中已默认添加了app\models路径,将自动完成别名引用。

所以只要确保类名正确,无需额外的use语句。

使用框架时,由于最新的框架都遵循PSR-4自动加载命名规范,

所以小心"下划线"( _ )在文件、路径名称中的使用,会被自动分解为多个路径来进行匹配。

 

来自 http://blog.csdn.net/iefreer/article/details/38179731


  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

普通分类: