我刚刚设置了一个新模型,我正在尝试调用一个自定义编写的静态方法,我从新控制器中编写该方法来匹配模型:
<?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
我们对此表示赞赏。
答案 0 :(得分:0)
尝试使用范围而不是实际的静态方法。
class NewModel extends Eloquent {
public function scopeGetFullWithDetails($userId)
{
//
}
}
通话是一样的。 NewModel::getFullWithDetails(1);
答案 1 :(得分:0)
我最终不得不从头开始重新创建模型。我最初创建它时一定存在文件编码或文件类型的问题,因为最初我只是复制了另一个模型类,然后更改了里面的值。创建一个全新的文件,然后粘贴PHP内容以修复问题!谢谢你的帮助!