我尝试从Laravel 3升级到4但是到处都是这个错误
调用未定义的方法 照亮\数据库\查询\生成器:: getAfterFilters()
有人知道这会来的地方吗?
答案 0 :(得分:23)
我也有这个错误所以我只是在这里发表我的观察。它总能帮助别人!
getAfterFilters()似乎是L4中所有控制器所需的方法。 如果错误说它没有定义,你可能忘了在你的类中扩展BaseController。
知道这一点,显而易见的解决办法是扩展BaseController ......但如果不需要,你就不必这么做了。 在我的情况下,由于一个非常愚蠢的原因,我的班级必须是一个有效的控制器。我使用以下路由语法:
Route::get('sse', 'SSE@deamon');
SSE没有扩展BaseController(不需要imho) 但是这种路由语法要求你使用扩展BaseController的控制器类...所以我改为:
Route::get('sse', [function() {
SSE::deamon();
}]);
现在它可以正常工作而不会丢失getAfterFilters()错误!
答案 1 :(得分:4)
好的,还有一件事可能发生......
您在控制器上运行的方法可能无法在路径中正确定义...例如,这就是我自己做的:
Route::get('vendors/getData', 'Vendors@getData');
Route::resource("vendors","VendorsController");
应该是
Route::get('vendors/getData', 'VendorsController@getData');
Route::resource("vendors","VendorsController");
,而不是!所以Amaud所说的基本上是完美的!我的getData函数没有扩展基本控制器,因为我尝试运行模型的功能而不是控制器!你可能想在拔头发之前检查一下!
答案 2 :(得分:0)
我遇到了同样的问题。在routes.php中,我错过了Controller字。
我的错误
路由:: get(' / list-users / {status?} / {page?}',' User @ listUsers');
应
路由:: get(' / list-users / {status?} / {page?}',' UserController @ listUsers');