当开始使用模型时,我收到以下错误
没有找到班级邮件.
我所做的一切:
-创建与命令模型php artisan make:model
-试图让所有条目从表posts与echo Post::all()
我使用了以下代码:
router.php
Route::get('/posts', function(){
$results = Post::all();
return $results;
});
Run Code Online (Sandbox Code Playgroud)
post.php中
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model {
protected $table = 'posts';
}
Run Code Online (Sandbox Code Playgroud)
我尝试了什么
- 重命名类
- 转储自动加载(未找到Laravel 4模型类)
Dan*_*ith 74
Laravel 5促进了模型和控制器等命名空间的使用.您的模型位于App命名空间下,因此您的代码需要像这样调用它:
Route::get('/posts', function(){
$results = \App\Post::all();
return $results;
});
Run Code Online (Sandbox Code Playgroud)
如注释中所述,您还use可以将命名空间导入到文件中,这样您就不需要引用完整路径,如下所示:
use App\Post;
Route::get('/posts', function(){
$results = Post::all();
return $results;
});
Run Code Online (Sandbox Code Playgroud)
虽然我正在对名称空间做一个简短的入门,但我也提到了为类别命名的能力.这样做意味着您可以在一个文件的范围内重命名您的类,如下所示:
use App\Post as PostModel;
Route::get('/posts', function(){
$results = PostModel::all();
return $results;
});
Run Code Online (Sandbox Code Playgroud)
有关导入和别名命名空间的更多信息,请访问:http://php.net/manual/en/language.namespaces.importing.php
jlb*_*ang 57
我有相同的"类[类名]未找到"错误消息,但它不是命名空间问题.我的所有命名空间都已正确设置.我甚至尝试过composer dump-autoload它并没有帮助我.
令人惊讶的是(对我而言)我composer dump-autoload -o根据Composer的帮助完成了这项任务,"优化PSR0和PSR4软件包也可以加载类图,有利于生产." 以某种方式这样做可以让作曲家表现并在autoload_classmap.php文件中正确包含类.
我在Laravel 5.2中遇到了相同的错误,结果是模型类定义中的名称空间不正确。
我使用以下命令创建了模型:
php artisan make:model myModel
Run Code Online (Sandbox Code Playgroud)
默认情况下,Laravel 5在App文件夹下创建模型,但是如果要像我一样将模型移动到另一个文件夹,则也必须在模型定义内更改名称空间:
namespace App\ModelFolder;
Run Code Online (Sandbox Code Playgroud)
在创建模型时要包括文件夹名称(不要忘记使用双反斜杠):
php artisan make:model ModelFolder\\myModel
Run Code Online (Sandbox Code Playgroud)