Laravel 4 调用未定义的方法“;生成器::“getAfterFilters”;升级到Laravel 4时

Laravel 4 调用未定义的方法“;生成器::“getAfterFilters”;升级到Laravel 4时,laravel-4,Laravel 4,我试图从Laravel3升级到4,但我到处都会遇到这个错误 调用未定义的方法 Illumb\Database\Query\Builder::getAfterFilters() 有人知道这会发生在哪里吗 我也有这个错误,所以我将在这里发表我的观察结果。它总能帮助别人 getAfterFilters()似乎是L4中所有控制器所需的方法。 如果错误表示未定义,则可能忘记在类中扩展BaseController 知道了这一点,显而易见的解决办法是扩展BaseController。。。但是如果不需要的话,你

我试图从Laravel3升级到4,但我到处都会遇到这个错误

调用未定义的方法 Illumb\Database\Query\Builder::getAfterFilters()

有人知道这会发生在哪里吗


我也有这个错误,所以我将在这里发表我的观察结果。它总能帮助别人

getAfterFilters()似乎是L4中所有控制器所需的方法。 如果错误表示未定义,则可能忘记在类中扩展BaseController

知道了这一点,显而易见的解决办法是扩展BaseController。。。但是如果不需要的话,你不必这么做。 在我的例子中,我的类必须是一个有效的控制器,因为一个非常愚蠢的原因。我使用了以下路由语法:

Route::get('sse', 'SSE@deamon');
SSE没有扩展BaseController(不需要imho) 但此路由语法要求您使用扩展BaseController的控制器类。。。所以我把它改成:

Route::get('sse', [function() {
    SSE::deamon();
}]);

现在它可以正常工作了,没有丢失getAfterFilters()错误

好吧,还有一件事可能发生

您在控制器上运行的方法可能未在路由中正确定义。。。例如,我自己就是这样做的:

Route::get('vendors/getData', 'Vendors@getData');
Route::resource("vendors","VendorsController");
应该是什么

Route::get('vendors/getData', 'VendorsController@getData');
Route::resource("vendors","VendorsController");

相反!所以阿穆德说的基本上是完美的!我的getData函数没有扩展基本控制器,因为我尝试运行模型的函数而不是控制器!你可能想在拔头发之前检查一下

我也有同样的问题。在routes.php中,我漏掉了Controller这个词

我的错误

路由::get('/list users/{status?}/{page?}','User@listUsers');

应该是

路由::get('/list users/{status?}/{page?}','UserController@listUsers');