【问题标题】:Error [RuntimeException] Could not scan for classes inside "database/seeds"错误 [RuntimeException] 无法扫描“数据库/种子”中的类
【发布时间】:2021-10-17 03:10:45
【问题描述】:

我在运行作曲家更新时遇到问题

其他安装命令也会发生同样的情况

错误:

[RuntimeException] 无法扫描里面的类 “数据库/种子”看起来既不是文件也不是文件夹

我该如何解决这个错误?试试,运行 composer install 还是不行

{
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": [
    "framework",
    "laravel"
],
"license": "MIT",
"require": {
    "php": "^7.2.5",
    "fideloper/proxy": "^4.2",
    "fruitcake/laravel-cors": "^1.0",
    "guzzlehttp/guzzle": "^6.3",
    "laravel/framework": "^7.0",
    "laravel/tinker": "^2.0",
    "laravel/ui": "^2.0"
},
"require-dev": {
    "facade/ignition": "^2.0",
    "fzaninotto/faker": "^1.9.1",
    "mockery/mockery": "^1.3.1",
    "nunomaduro/collision": "^4.1",
    "phpunit/phpunit": "^8.5"
},
"config": {
    "optimize-autoloader": true,
    "preferred-install": "dist",
    "sort-packages": true
},
"extra": {
    "laravel": {
        "dont-discover": []
    }
},
"autoload": {
    "psr-4": {
        "App\\": "app/"
    },
    "classmap": [
        "database/seeds",
        "database/factories"
    ]
},
"autoload-dev": {
    "psr-4": {
        "Tests\\": "tests/"
    }
},
"minimum-stability": "dev",
"prefer-stable": true,
"scripts": {
    "post-autoload-dump": [
        "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
        "@php artisan package:discover --ansi"
    ],
    "post-root-package-install": [
        "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
    ],
    "post-create-project-cmd": [
        "@php artisan key:generate --ansi"
    ]
}
}

【问题讨论】:

  • 尝试将 seedsfactories 文件夹放在数据库文件夹中,如果没有的话,DatabaseSeeder 类可能不存在
  • 播种机和工厂文件夹在数据库中
  • 那么DatabaseSeeder类呢?
  • 您对此有何疑问? database/seedsdatabase/factories 文件夹是否存在?

标签: php laravel composer-php


【解决方案1】:

将作曲家自动加载更改为

"autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    }

在 Laravel 8 中,工厂和播种机两个目录都有命名空间。在 Laravel 7 中,它仍然使用类映射来加载它们。

首先,检查你的类是否使用命名空间,然后使用 psr4 自动加载,否则你可以使用类映射;

【讨论】:

    猜你喜欢
    • 2014-08-12
    • 2016-08-19
    • 2014-12-26
    • 1970-01-01
    • 2014-01-02
    • 2015-06-08
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多