【发布时间】: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() 时,我在屏幕上得到完全相同的输出。
任何人都可以解释这一点,并可能指出我正确的方法,因为我的解决方案感觉很老套,而且我确信有一种更清洁的方法来完成我正在尝试做的事情。
谢谢
【问题讨论】: