Laravel - 未找到模型类

Syl*_*ois 32 php laravel

当开始使用模型时,我收到以下错误

没有找到班级邮件.

我所做的一切:
-创建与命令模型php artisan make:model
-试图让所有条目从表postsecho 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文件中正确包含类.

  • 我也是.有人有任何见解吗? (5认同)
  • 生命保护!这让我花了我的时间今天下午高效而不是搜索Stackoverflow几个小时. (3认同)
  • 那很有效.希望莫尔斯感到为什么. (2认同)
  • Yeaah.这救了我.谁能说出这是做什么的? (2认同)
  • 同样在这里.总WTF时刻. (2认同)
  • 谢谢你这对我有用!我的设置是自动将新的和更改的文件上传到我的 QA 服务器进行测试,并且由于某种原因,我创建的模型没有被看到。运行这个解决了我的问题。 (2认同)

Wei*_*Wei 5

我在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)