Laravel ClassLoader试图加载我的模型的旧版本

Chr*_*ris 9 model laravel

不久之后,我决定完全重做Laravel中的一个模型,但为了以防万一,我想保留文件的原始副本.所以我将它重命名为MyModel(OLD).php,并将其保留在新模型旁边的models文件夹中.

现在我对Laravel有了更好的理解,我意识到这不是一个好主意,但无论如何,一切似乎都能运作好几个月.然后今天,我对我的新模型中的一个函数做了一个小的更新(修改数据库查询),突然Laravel试图加载我的模型的旧副本.我终于将旧版本从models文件夹中移出并完全放在我的laravel应用程序之外的备份文件夹中,但现在Laravel抛出了错误:

include(pathToMyModels/MyModel (OLD).php): failed to open stream: No such file or directory
Run Code Online (Sandbox Code Playgroud)

参考ClassLoader.php的这一部分

/**
* Scope isolated include.
*
* Prevents access to $this/self from included files.
*/
function includeFile($file)
{
include $file;
}
Run Code Online (Sandbox Code Playgroud)

我尝试撤消对模型的修改,更改路由和控制器功能名称,清除laravel的缓存,清除浏览器缓存,使用不同的浏览器,但似乎没有任何工作,除了在调用它包含的类之前手动包含模型的php文件.我能做些什么才能让Laravel自动识别我的模型,就像我拥有的​​所有其他模型一样?

Cha*_*hna 27

尝试清除composer缓存,然后运行composer dump-autoload.

composer clear-cache
composer dump-autoload
Run Code Online (Sandbox Code Playgroud)


Anj*_*wal 6

如果您不想运行命令,请尝试这个,我认为它可以解决您的问题。

  1. 转到你的 laravel_project_folder\vendor\composer
  2. 现在在文本编辑器中打开文件 autoload_classmap.php 和 autoload_static.php
  3. 并找到您的旧/备份文件名行
  4. 并用实际文件名重命名并更正其路径。
  5. 现在再次运行您的项目并检查是否发生错误,我认为您的问题已解决。