在升级到Laravel 4时调用未定义的方法“Builder :: getAfterFilters”

时间:2014-03-26 16:36:00

标签: laravel-4

我尝试从Laravel 3升级到4但是到处都是这个错误

  

调用未定义的方法   照亮\数据库\查询\生成器:: getAfterFilters()

有人知道这会来的地方吗?

enter image description here

3 个答案:

答案 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');