![](/img/trans.png)
[英]Using put method on Laravel Eloquent Collection will always return an array
[英]Laravel Eloquent - Using array in find() method
我有三个表- 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'));
}
但这是行不通的。 谁能帮我? 还有什么其他方法可以更好地实现这一目标?
如前所述, find()
将始终返回1项,并且期望该参数为字符串/整数。 您想使用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'));
}
我假设您在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.