我有三张牌桌 - users
,products
和orders
users
与orders
之间存在关联(users
有许多orders
)。
orders
表包含product_id
和user_id
列。
现在我想访问用户订单的产品详细信息。
我在尝试什么:
public function myOrders(){
$orders = Auth::user()->orders->pluck('product_id');
$products = Product::find($orders);
return view('shop.myorders', compact('products'));
}
但这不起作用。谁能帮我?还有什么方法可以更好地实现这一目标?
答案 0 :(得分:2)
如上所述,find()
将始终返回1个项目,并期望参数的字符串/ int。您想要使用where
和get
代替。使用一系列ID,您可以使用whereIn
。
public function myOrders(){
$orders = Auth::user()->orders->pluck('product_id');
$products = Product::whereIn('id', $orders)->get();
return view('shop.myorders', compact('products'));
}
答案 1 :(得分:1)
我假设您在orders()
模型中定义了Product
关系:
public function orders()
{
return $this->hasMany(Order::class)
}
然后您就可以加载所有用户订单中的产品了:
$products = Product::whereHas('orders', function($q) {
$q->where('user_id', auth()->id())
})->get();