seed 填充测试数据找不到指定类

我创建了一个空的 \App\Clue 类,

// app/Clue.php
namespace App;

use Illuminate\Database\Eloquent\Model;

class Clue extends Model
{
    //
}

然后还创建了一个对应的seeder

// databases/seeds/CluesTableSeeder.php
use Illuminate\Database\Seeder;

class CluesTableSeeder extends Seeder
{
    public function run()
    {
        factory(\App\Clue::class, 40)->create();
    }
}

以及对应的 factory 文件:

// databases/factories/ClueFactory.php
use Faker\Generator as Faker;

$factory->define(\App\Clue::class, function (Faker $faker) {
    return [
        'name' => $faker->word,
        ...
    ];
});

当我运行 php artisan db:seed --class=CluesTableSeeder 时,终端报错提示:

In FactoryBuilder.php line 192:
  Class 'App\Clue' not found

错误的意思是找不到这个类,但是我就是在这个命名空间下定义的这个类,虽然是个空类。

挣扎过程:

  1. 系统原本自动生成的一个User类的Seeder运行却是正常的,我对比了二者,除了引入的类名不同,别的都一样,但就是这个不行,那个行;
  2. 网上查到的很多资料都是--class=指定的这个类没找到,要运行 composer dump-autoload,本着死马当活马医的原则,我试了下,不行;
  3. 还有说用use导入包的,也一样不行;

黔驴技穷的我只能来寻求论坛的帮助了,在此先谢过各位。

全栈成长中~~~
附言 1  ·  4年前

我刚直接在普通类里面使用这个模型Clue::all(),也是提示找不到App\Clue,怀疑是composer的自动加载配置有问题;

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

好吧,我发现问题的关键了。真实原因是我是在本地敲代码,同时本地的修改都会被IDE自动同步至测试服务器,而问题在于,很多的除user以外的model,是我统一用python脚本自动生成的,IDE没有上传,所以云端运行环境的app目录下只有一个User模型,所以它是正常的,其它都不行。汗颜。

感觉把问题提出来后,就有一种新的灵感或者是动力会驱使自己尽快找到原因。。

4年前 评论
讨论数量: 3
LDL1023

按照你的说明做了一次,没报

Class 'App\Clue' not found 

这个错误

建议新建一个工程重新做一次试试哈

4年前 评论

好吧,我发现问题的关键了。真实原因是我是在本地敲代码,同时本地的修改都会被IDE自动同步至测试服务器,而问题在于,很多的除user以外的model,是我统一用python脚本自动生成的,IDE没有上传,所以云端运行环境的app目录下只有一个User模型,所以它是正常的,其它都不行。汗颜。

感觉把问题提出来后,就有一种新的灵感或者是动力会驱使自己尽快找到原因。。

4年前 评论

composer dump 一下,手动修改 seeder 类不会自动加载

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!