Php Laravel管理员:异常';BadMethodCallException';带有消息';调用未定义的方法Illumb\Database\Query\Builder::

Php Laravel管理员:异常';BadMethodCallException';带有消息';调用未定义的方法Illumb\Database\Query\Builder::,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,我试图在我的一个表的配置中使用Laravel 4 Administrator的全局操作(“Global_Actions”数组),无论我调用什么方法,我都会得到可怕的结果: local.ERROR: exception 'BadMethodCallException' with message 'Call to undefined method Illuminate\Database\Query\Builder::doNothing()' in C:\xampp\htdocs\tikitour\v

我试图在我的一个表的配置中使用Laravel 4 Administrator的全局操作(“Global_Actions”数组),无论我调用什么方法,我都会得到可怕的结果:

local.ERROR: exception 'BadMethodCallException' with message 'Call to undefined method Illuminate\Database\Query\Builder::doNothing()' in C:\xampp\htdocs\tikitour\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php:2117
Stack trace:
#0 [internal function]: Illuminate\Database\Query\Builder->__call('doNothing', Array)
#1 [internal function]: Illuminate\Database\Query\Builder->doNothing()
#2 C:\xampp\htdocs\tikitour\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(913): call_user_func_array(Array, Array)
#3 C:\xampp\htdocs\tikitour\app\config\administrator\countries.php(81): Illuminate\Database\Eloquent\Builder->__call('doNothing', Array)
#4 C:\xampp\htdocs\tikitour\app\config\administrator\countries.php(81): Illuminate\Database\Eloquent\Builder->doNothing()
#5 C:\xampp\htdocs\tikitour\vendor\frozennode\administrator\src\Frozennode\Administrator\Actions\Action.php(159): Frozennode\Administrator\Config\Factory->{closure}(Object(Illuminate\Database\Eloquent\Builder))
#6 C:\xampp\htdocs\tikitour\vendor\frozennode\administrator\src\controllers\AdminController.php(205): Frozennode\Administrator\Actions\Action->perform(Object(Illuminate\Database\Eloquent\Builder))
#7 [internal function]: Frozennode\Administrator\AdminController->customModelAction('Countries')
#8 C:\xampp\htdocs\tikitour\vendor\laravel\framework\src\Illuminate\Routing\Controller.php(231): call_user_func_array(Array, Array)
#9 C:\xampp\htdocs\tikitour\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php(93): Illuminate\Routing\Controller->callAction('customModelActi...', Array)
#10 C:\xampp\htdocs\tikitour\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php(62): Illuminate\Routing\ControllerDispatcher->call(Object(Frozennode\Administrator\AdminController), Object(Illuminate\Routing\Route), 'customModelActi...')
#11 C:\xampp\htdocs\tikitour\vendor\laravel\framework\src\Illuminate\Routing\Router.php(962): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), 'Frozennode\Admi...', 'customModelActi...')
#12 [internal function]: Illuminate\Routing\Router->Illuminate\Routing\{closure}('Countries')
#13 C:\xampp\htdocs\tikitour\vendor\laravel\framework\src\Illuminate\Routing\Route.php(109): call_user_func_array(Object(Closure), Array)
#14 C:\xampp\htdocs\tikitour\vendor\laravel\framework\src\Illuminate\Routing\Router.php(1028): Illuminate\Routing\Route->run(Object(Illuminate\Http\Request))
#15 C:\xampp\htdocs\tikitour\vendor\laravel\framework\src\Illuminate\Routing\Router.php(996): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#16 C:\xampp\htdocs\tikitour\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(776): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#17 C:\xampp\htdocs\tikitour\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(746): Illuminate\Foundation\Application->dispatch(Object(Illuminate\Http\Request))
#18 C:\xampp\htdocs\tikitour\vendor\barryvdh\laravel-debugbar\src\Middleware.php(34): Illuminate\Foundation\Application->handle(Object(Illuminate\Http\Request), 1, true)
#19 C:\xampp\htdocs\tikitour\vendor\laravel\framework\src\Illuminate\Session\Middleware.php(72): Barryvdh\Debugbar\Middleware->handle(Object(Illuminate\Http\Request), 1, true)
#20 C:\xampp\htdocs\tikitour\vendor\laravel\framework\src\Illuminate\Cookie\Queue.php(47): Illuminate\Session\Middleware->handle(Object(Illuminate\Http\Request), 1, true)
#21 C:\xampp\htdocs\tikitour\vendor\laravel\framework\src\Illuminate\Cookie\Guard.php(51): Illuminate\Cookie\Queue->handle(Object(Illuminate\Http\Request), 1, true)
#22 C:\xampp\htdocs\tikitour\vendor\stack\builder\src\Stack\StackedHttpKernel.php(23): Illuminate\Cookie\Guard->handle(Object(Illuminate\Http\Request), 1, true)
#23 C:\xampp\htdocs\tikitour\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(642): Stack\StackedHttpKernel->handle(Object(Illuminate\Http\Request))
#24 C:\xampp\htdocs\tikitour\public\index.php(49): Illuminate\Foundation\Application->run()
#25 {main} [] []
下面是config数组,“permission”属性工作正常,我现在有了它,所以doNothing()方法只返回true:

'global_actions' => array(
        //Importing data via xls upload 
        'use_upload' => array(
            'title' => 'Use Upload',
            'messages' => array(
                'active' => 'Uploading...',
                'success' => 'Uploaded',
                'error' => 'There was an error while Uploading',
            ),
            'permission' => function($model)
            {                           
                return $model->hasUpload();             
            },
            //the model is passed to the closure
            'action' => function($model)
            {   

                $model->doNothing();                               
            }
        ),

    ),      

最重要的是,它在管理员之外工作得非常完美。似乎模型的方法必须以某种方式注册到Illumb,但我认为情况并非如此,因为->hasUpload()已被识别并且工作正常。

问题已解决:我混淆了全局\u操作和自定义\u操作,此配置选项将传递查询生成器的实例,而不是所表示的模型。我在函数中实例化了所需的模型:

//the Eloquent query builder is passed to the closure
'action' => function($query)
{                   
    $country = new Countries();
    return $country->processUpload();
}