【发布时间】:2019-10-19 06:09:29
【问题描述】:
我正在尝试为特定用户检索愿望清单表上的数据,到目前为止,它只检索表上的第一个数据,只返回一个数组而不是表中具有相同用户 ID 的三个数组
public function getWishlistByUserId($id){
$wishlists = Wishlist::where('userId', $id)->get();
foreach($wishlists as $wishlist){
$products = Product::where('id', $wishlist->productId)->get();
return $products;
}
}
【问题讨论】:
-
这里有一堆问题...您正在循环,但循环中的 return 语句不会做任何事情。在查询单个 ID 时使用
->get()是多余的,因为它将返回单个Product的Collection;可以使用->first()来获取产品,由于在循环中调用额外的查询而效率低下(即,如果该用户有 1000 个愿望清单,它将调用 1000 个数据库查询)等等。考虑重构,使用关系,研究推送数据到数组中,等等。