正如标题所说,在尝试升级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()
时,我在屏幕上获得完全相同的输出。
任何人都可以解释这一点,并可能指出我正确的方法来做到这一点,因为我的解决方案感觉很糟糕,而且我确信有更清洁的方法可以完成我想要做的事情。
由于
答案 0 :(得分:0)
再次回答我自己的问题道歉,但是我找到了适合我的问题的解决方案。
自安装Laravel 5以来,我在App文件夹中保留了默认的User模型,这是Laravel在调用Auth::user()
时使用的用户模型。
我需要更改config / auth.php以使用我自定义的用户模型,所有这些都按预期工作。