Class “新类名”;歌曲";未找到扩展Laravel 5模型类
我创建了一个名为“宋”的新类 类app/ClassName的位置,因此它的app/songs.phpClass “新类名”;歌曲";未找到扩展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 想要对应
<?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/"
}
},