Class “新类名”;歌曲";未找到扩展Laravel 5模型类

Class “新类名”;歌曲";未找到扩展Laravel 5模型类,class,laravel,model,eloquent,extends,Class,Laravel,Model,Eloquent,Extends,我创建了一个名为“宋”的新类 类app/ClassName的位置,因此它的app/songs.php <?php namespace App; use Illuminate\Database\Eloquent\Model as Eloquent; class Song extends Eloquent { //put your code here } My SongsController.php位置:app/Http/controller/SongsController.php 想要对应

我创建了一个名为“宋”的新类

类app/ClassName的位置,因此它的app/songs.php

<?php
namespace App;
use Illuminate\Database\Eloquent\Model as Eloquent;
class Song extends Eloquent {
//put your code here
}
My SongsController.php位置:app/Http/controller/SongsController.php

想要对应我的数据库表“songs”

如果我不添加类而使用“宋”模型,效果很好。代码如下

DB::table('songs)->get();
提前感谢,很抱歉我是Lavaral 5的新手。

请尝试以下命令:

composer dump-autoload -o
编辑:此命令使用新类更新自动加载器。
更多信息:

您的类名为
Song
,文件名为
songs.php
。您需要将文件命名为
Song.php
,以便找到它

Composer生成兼容的自动加载器

您会注意到在composer.json文件中有这样一个部分

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    }
},
这告诉自动加载程序
App
命名空间中的任何内容都应该在
App
目录中找到

调用类时,任何已注册的自动加载程序都会尝试加载类文件。这意味着除非您另有指定,否则
App\Song
将查找
App/Song.php

根据规范

加载与完全限定类名对应的文件时

在完全限定类名(“名称空间前缀”)中,一个或多个前导名称空间和子名称空间名称(不包括前导名称空间分隔符)的连续序列对应于至少一个“基本目录”

“名称空间前缀”后面的连续子名称空间名称对应于“基本目录”中的子目录,其中名称空间分隔符表示目录分隔符。子目录名称必须与子命名空间名称的大小写匹配

终止类名对应于以.php结尾的文件名。文件名必须与终止类名的大小写匹配


类名为
song
,文件名为
songs
。他们需要匹配。应该是
Song.php
Hi@BenSwinburne,感谢您的即时回复。是的,只要我匹配了类名和文件名,错误就消失了。你能解释一下为什么我们需要匹配相同的类名和文件名吗?我已经在下面的回答中解释过了。你能解释一下为什么这段代码回答了这个问题吗?代码唯一的答案是,因为他们不教解决方案。
DB::table('songs)->get();
composer dump-autoload -o
"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    }
},