创建新模型后调用未定义的方法(Laravel 4.2)

时间:2015-09-11 00:24:56

标签: php laravel laravel-4 eloquent

我刚刚设置了一个新模型,我正在尝试调用一个自定义编写的静态方法,我从新控制器中编写该方法来匹配模型:

<?php

class NewModelWebController extends AjaxController {

    public function newModelView() {
        $loggedUser = Auth::user();
        $data['user'] = $loggedUser;
        $data['allDetails'] = NewModel::getFullWithDetails($loggedUser->user_id);

        return View::make('webApp::new-model.view', $data);
    }

}

这是模型类中的方法定义(在php声明之前没有空格):

<?php

class NewModel extends Eloquent {

   protected $table = 'new_models';
   protected $primaryKey = 'new_model_id';

   public static function getFullWithDetails($userId) { 
       return 1; // doesn't matter what I return -- the problem still happens
   }

}

返回的错误如下:

Call to undefined method Illuminate\Database\Query\Builder::getFullWithDetails()

当我拨打NewModel::find(1);等电话时,它没有任何问题,但是一旦我尝试对我写的方法进行调用,它就不起作用。

我尝试了以下所有命令但没有成功:

  • composer update
  • composer dump-autoload
  • composer clear-cache
  • chown -R www-data:www-data ./theProjectFile

我们对此表示赞赏。

2 个答案:

答案 0 :(得分:0)

尝试使用范围而不是实际的静态方法。

class NewModel extends Eloquent {

    public function scopeGetFullWithDetails($userId)
    {
        //
    }
}

通话是一样的。 NewModel::getFullWithDetails(1);

答案 1 :(得分:0)

我最终不得不从头开始重新创建模型。我最初创建它时一定存在文件编码或文件类型的问题,因为最初我只是复制了另一个模型类,然后更改了里面的值。创建一个全新的文件,然后粘贴PHP内容以修复问题!谢谢你的帮助!