我坚持在控制器中定义模型。我在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));
}
}
我认为问题就像我在模型中遗漏了一些东西。你能指出错误吗?
感谢您的帮助。感谢。
答案 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
先前的测试可能不会受到伤害。