Laravel 4 BadMethodCallException在调用模型的方法时

时间:2014-10-13 18:10:37

标签: php laravel-4

我在Laravel应用程序中创建了一个User类,如下所示:

<?php

use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Eloquent implements UserInterface, RemindableInterface {
...
public function hasAnyRoles()
{
     return true;
}

为了本示例的目的,将函数简化为始终返回true。我几乎在这里按照本教程创建了这个类:http://alexsears.com/article/adding-roles-to-laravel-users。我按如下方式创建了一个控制器:

class WelcomeController extends Controller
{
  public function welcomeAction()
  {
     $user = User::find(Auth::user()->id);
     $result = $user->hasAnyRoles();
     return Response::make("Result: ".$result);
  }
}

我能够成功登录系统,路由按预期工作,变量$ user已正确初始化,我可以从中获取所有信息(用户名,ID,电子邮件等)但是一旦我调用我得到的$user->hasAnyRoles()方法:

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

如果我注释掉控制器中的相应行,它一切正常,但我不能在没有得到该错误的情况下调用该模型的任何方法。任何想法为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

尽管很愚蠢,但事实证明应用程序正在从另一个文件中读取User类。我将User_backup.php复制到同一目录中以防万一,这是从中读取类的文件,因此对User.php的任何更改都被忽略了。我不得不删除备份文件并进行编辑器更新,以使其全部正常工作..