繁体   English   中英

Laravel Eloquent-在find()方法中使用数组

[英]Laravel Eloquent - Using array in find() method

我有三个表- usersproductsorders usersorders之间存在关系( users有很多orders )。

orders表包含product_iduser_id列。

现在,我要访问用户的订单产品详细信息。

我正在尝试:

public function myOrders(){
    $orders = Auth::user()->orders->pluck('product_id');
    $products = Product::find($orders);
    return view('shop.myorders', compact('products'));
} 

但这是行不通的。 谁能帮我? 还有什么其他方法可以更好地实现这一目标?

如前所述, find()将始终返回1项,并且期望该参数为字符串/整数。 您想使用whereget 通过ID数组,您可以使用whereIn

public function myOrders(){
    $orders = Auth::user()->orders->pluck('product_id');
    $products = Product::whereIn('id', $orders)->get();
    return view('shop.myorders', compact('products'));
}

我假设您在Product模型中定义了orders()关系:

public function orders()
{
    return $this->hasMany(Order::class)
}

然后,您将能够从所有用户的订单中加载产品:

$products = Product::whereHas('orders', function($q) {
        $q->where('user_id', auth()->id())
    })->get();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM