在laravel中显示用户的订单

时间:2016-06-17 06:40:42

标签: php laravel-4

我试图让用户能够查看他的订单。我怎样才能查询数据库..我尝试这样的东西,但我得到了空页...我的意思是数据库。可能是我的查询不正确。

这是我的控制器

public function viewOrders() {
    $user_order = self::$user->user_id;
    $orders = Order::where('user_id', '=', $user_order);
    return View::make('site.users.orders', [
        'orders' => $orders
    ]);
}

我在这里得到了正确的user_id吗?我不确定......

更新:我的用户模型中有这个

public function orders() {
    return $this->hasMany('Order', 'user_id', 'user_id');
}

2 个答案:

答案 0 :(得分:1)

如果您已正确设置Authentication,则可以执行以下操作。

public function viewOrders(){
    $user = Auth::user();
    return view('site.users.orders',[
        'orders' => $user->orders
    ]);
}

当您在不使用调用括号的情况下使用关系时,您将获得一组模型,如果它们尚未加载则会被查询。这称为延迟加载,如果要在访问之前加载关系,可以使用eager loading。在这种情况下,虽然没有必要。

答案 1 :(得分:1)

好的,所以基于你的路线+按钮+模型就像这样做

$orders = self::$user->orders()->orderBy('order_id', 'asc')->get();
return View::make('site.users.orders', [
    'orders' => $orders
]);

这应该有用..如果你不需要,可以删除orderBy子句。