EventController.php第22行中的FatalErrorException:找不到类'App \ Event'

时间:2016-05-02 11:17:24

标签: php laravel-5.2

我坚持在控制器中定义模型。我在stackoverflow中尝试了几种解决方案,但没有任何帮助。

我的路线

Route::resource('/events' , 'EventController');

我的模特: Event.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Event extends Model
{
    protected $table = 'events';

    protected $hidden = ['remember_token'];

    protected $guarded = array('id');

    protected $fillable = array();

    public static $rules = array(
        'name' => 'required|min:5',
        'price' => 'required|number'
      );
}

在我的控制器

<?php

namespace App\Http\Controllers;

use App\Event;

use App\Http\Requests;

use Illuminate\Http\Request;

use View;

use Validator;

use Redirect;

class EventController extends Controller
{
    //Show lists of the events
    public function index()
    {
        $events = \App\Event::all();

        return view('admins.events.index' , compact($events));
    }
}

我认为问题就像我在模型中遗漏了一些东西。你能指出错误吗?

感谢您的帮助。感谢。

2 个答案:

答案 0 :(得分:1)

你需要做

use App\Models\Event

而不是

use App\Event

在您的控制器中。

并且在您的索引方法中引用仅使用Event的事件而不是完全限定的名称,即\App\Event

将其添加到您的composer.json文件中。

"autoload": {
    "classmap":[
       "app/"
    ]
}

然后运行composer dump

并像这样加载你的视图,你正在以错误的方式使用压缩。

return view('admins.events.index' , compact('events'));

应该这样做。

答案 1 :(得分:1)

Event您已App\Models,因此您需要use看起来像这样:

use App\Models\Event;

否则你引用不存在的类,因此你面临的错误。

另外,当你使用use时,你基本上这样做是为了避免需要输入完整的命名空间,所以这(我使用了正确的命名空间,而不是你的问题中的一个):

$events = \App\Models\Event::all();

可以缩短为

$events = Event::all();

另请注意,即使您更正use必须更正上述代码中的命名空间(因为它无效且use无法修复you)或用短版本替换调用,如上例所示。

最后composer dumpautoload先前的测试可能不会受到伤害。