Laravel 5 播种

Posted

技术标签:

【中文标题】Laravel 5 播种【英文标题】:Laravel 5 Seeding 【发布时间】:2015-04-13 20:16:26 【问题描述】:

我正在关注docs 为用户表做种,其中显示正在使用 User::create

class UserTableSeeder extends Seeder 

    public function run()
    
      DB::table('users')->delete();

      User::create([
        'username' => 'test',
        'firstname' => 'Test',
        'lastname' => 'Test',
        'email' => 'test@domain.com',
        'password' => Hash::make('test'),
        'role' => 'user'
      ]);
    


但它一直在说:

php Fatal error:  Class 'User' not found in /home/vagrant/projects/roopla/database/seeds/UserTableSeeder.php on line 17

我想也许我需要为用户使用工匠制作:模型,但它已经存在。谁能指出我正确的方向我只是从 Laravel 开始并通过 Laracast 和文档将它拼凑在一起,但是没有 Laracast 播种 5.0。您现在似乎无法生成种子,因为工匠无法识别 generate:seed

【问题讨论】:

【参考方案1】:

这是因为在 Laravel 5 中,User 模型位于 App 命名空间中,而播种器位于全局命名空间中。

你应该使用:

 \App\User::create([
        'username' => 'test',
        'firstname' => 'Test',
        'lastname' => 'Test',
        'email' => 'test@domain.com',
        'password' => Hash::make('test'),
        'role' => 'user'
      ]);

或在种子文件的开头:

use App\User;

现在你可以使用你展示的代码了

【讨论】:

【参考方案2】:

您需要在播种器顶部使用use App\User; 导入您的用户模型,或者只需通过\App\User::create... 引用它。您需要通过其命名空间引用User 模型。

【讨论】:

以上是关于Laravel 5 播种的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel 5.4 播种功能时出错

Laravel 5:如何将播种器类添加到自动加载?

laravel 5.4中的动态播种

使用 Laravel 5 中的 --force 进行生产时,数据库卡在使用播种机迁移

Laravel 5.7 在播种机中使用 Passport 进行测试

Laravel 5 - 部署应用程序后如何自动播种表?