班级'在laravel 5.0.16中找不到

时间:2017-03-16 19:14:50

标签: laravel laravel-5

我是laravel的初学者。我在我的wamp服务器中使用Laravel 5.0.16。我一直在laracasts.com上免费视频教程学习laravel。我一直在尝试从数据库中获取数据。我已检查过我的应用已连接到数据库。

我在app文件夹中有以下结构:

-app
   -Http(folder)
   -Other folders (folder)
   -Article.php (file)
   -User.php (file)

在Http文件夹中:

   -Controllers (folder)
   -Middleware (folder)
   -Requests (folder)
   -Kernel.php (file)
   -routes.php (file)

在Controllers文件夹中:

   -ArticleController.php (file)

以下是旁路,控制器和模型文件中的代码:

/*routes*/

  Route::get('articles','ArticleController@index');

/*Controller file*/
use App\models\Article;
namespace App\Http\Controllers;
use App\Http\Request;
use App\Http\Controllers\Controller;
class ArticleController extends Controller {
  public function index()
  {
    $users = Article::all();
    return $users;
   }
}

/*Model file - Article.php*/
namespace App\models;
use Illuminate\Database\Eloquent\Model;
class Article extends Model {
 protected $table = 'users';
 protected $fillable = ['id','firstname', 'lastname',   'email','reg_date'];
}

用户是带有字段的数据库表。

我低于恐怖:

FatalErrorException in ArticleController.php line:
Class 'App\Http\Controllers\Article' not found

我检查了其他SO论坛,但他们没有帮助我,有人能建议我,我错过了什么?

2 个答案:

答案 0 :(得分:3)

这里有两个问题。一个命名空间声明应该在任何use语句之前发生。

其次,您的模型使用model命名空间,但您的模型不在模型目录中。命名空间应与目录结构匹配。因此,您需要将命名空间更改为use App\Article(也更改模型文件中的命名空间)或将模型文件移动到模型目录中。

所以要在不移动文件的情况下修复此问题,请将代码更新为

namespace App\Http\Controllers;
use App\Article;
use App\Http\Request;
use App\Http\Controllers\Controller;
class ArticleController extends Controller {
    public function index()
    {
        $users = Article::all();
        return $users;
    }
}

/*Model file - Article.php*/
namespace App;
use Illuminate\Database\Eloquent\Model;
class Article extends Model {
    protected $table = 'users';
    protected $fillable = ['id','firstname', 'lastname',   'email','reg_date'];
}

答案 1 :(得分:0)

将此行添加到控制器的顶部:

use App\models\Article;

或者在使用此模型时使用完整命名空间:

\App\models\Article::all();