【问题标题】:Laravel package migration class can not find sibling classLaravel 包迁移类找不到兄弟类
【发布时间】:2021-06-04 13:23:41
【问题描述】:

我正在创建一个 Laravel 包。

这是我的文件夹结构:

- host => (a laravel app to test the package)
   - WebSite
       - packages
           - Company
               - FirstPackage
                   - database
                       - migrations
                   - src
                       - Models
                       - Http
                           - Controllers

migrations 文件夹内,我有两个迁移类:

2021-06-04-create-customers-table
2021-06-04-add-name-to-customers

CreateCustomersTable 类中,我有一个名为 TABLE_NAME 的常量。

AddNameToCustomers 类中,我想重用那个常量,我只是像CreateCustomersTable::TABLE_NAME 一样使用它。

我的 IDE 是 VS Code 没有抱怨。但是当我运行php artisan migration 时,我得到了这个错误:

找不到类“CreateCustomersTable”
在packages/Company/FirstPackage/database/migrations/2021-06-04-add-name-to-customers.php:line_number

基于Laravel migrations: Class "not found",我确保类名匹配文件名,并且我还尝试映射composer.json中的类:

"autoload": {
    "classmap": [
        "database/migrations"
    ],
    "psr-4": {
        "Company\\FirstPackage\\": "src/"
    }
},

但是这些值都不适合我:

database/migrations
app/database/migrations
Company/FirstPackage/database/migrations

所以我有两个问题。

第一:我该如何解决这个问题?

第二个也是更重要的:我应该如何调试 class not found 错误?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    请先使用composer dumpautoload,如果没有帮助,请按照以下步骤操作:)

    第一种方式:执行迁移命令时使用标志。 这样做很不方便,但如果你真的需要,你可以试试:

    php artisan migrate --path=/path/to/your/dir/with/migrations

    第二种方式:您可以使用 $this->loadMigrationsFrom($paths); 将您的迁移所在的路径添加到您的 AppServiceProvider 中

    我应该如何调试类未发现的错误?

    • 检查文件名和类名;
    • 查看类所在的路径;
    • 运行composer dumpautoload它可以帮助你处理这样的警告信息

    Class App\Namespace\To\Class\ClassName located in ./app/directory/to/class/ClassName.php does not comply with psr-4 autoloading standard. Skipping.;

    • 最后您可以检查vendor/composer/autoload_* 文件以找出错误。

    【讨论】:

      猜你喜欢
      • 2012-12-13
      • 2021-02-19
      • 2015-08-29
      • 2013-09-04
      • 2018-11-05
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 2016-03-18
      相关资源
      最近更新 更多