Builder.php中的BadMethodCallException:调用未定义的方法Laravel 5.0

时间:2015-09-21 12:45:58

标签: php laravel laravel-5

正如标题所说,在尝试升级Laravel 4.2应用程序时,我在Laravel 5.0中遇到错误。

确切的错误消息是:调用未定义的方法Illuminate \ Database \ Query \ Builder :: orders()

当我尝试使用以下行从控制器获取经过身份验证的用户订单时出现错误:

$this->user->orders()->orderBy('created_at', 'desc')->get()

父类将$this->user设置为:

$this->user = Auth::user();

用户建模与订单的关系是:

public function orders()
{
    return $this->hasMany('App\Models\Order');
}

让我更加困惑$this->user->orders()会返回我遇到的错误,User::whereId($this->user->id)->first()->orders()会返回我期待的订单。

当我同时转储$this->user->orders()User::whereId($this->user->id)->first()->orders()时,我在屏幕上获得完全相同的输出。

任何人都可以解释这一点,并可能指出我正确的方法来做到这一点,因为我的解决方案感觉很糟糕,而且我确信有更清洁的方法可以完成我想要做的事情。

由于

1 个答案:

答案 0 :(得分:0)

再次回答我自己的问题道歉,但是我找到了适合我的问题的解决方案。

自安装Laravel 5以来,我在App文件夹中保留了默认的User模型,这是Laravel在调用Auth::user()时使用的用户模型。

我需要更改config / auth.php以使用我自定义的用户模型,所有这些都按预期工作。