【问题标题】:BadMethodCallException in Builder.php: Call to undefined method Laravel 5.0Builder.php 中的 BadMethodCallException:调用未定义的方法 Laravel 5.0
【发布时间】:2015-09-21 20:58:36
【问题描述】:

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

确切的错误信息是:Call to undefined method 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() 时,我在屏幕上得到完全相同的输出。

任何人都可以解释这一点,并可能指出我正确的方法,因为我的解决方案感觉很老套,而且我确信有一种更清洁的方法来完成我正在尝试做的事情。

谢谢

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    很抱歉再次回答我自己的问题,但是我找到了解决问题的正确方法。

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

    我需要更改 config/auth.php 以使用我的自定义用户模型,并且一切都按预期工作。

    【讨论】:

      猜你喜欢
      • 2019-07-13
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多