php - Foreach 查询产品
问题描述
我想要一个以 id 类别作为外键的产品列表,但我不想对每个产品进行查询,有没有更聪明的方法呢?当前代码有效,但我认为我做的不正确,请遵循代码:
if($products){
$categories = [];
foreach($products as $product){
$categories[] = $product->categories()->first();
}
return view('products',[
'products' => $products,
'categories' => $categories
]);
}```
解决方案
您可以使用 Eager loading 加载每个产品的类别,而无需遍历每个产品:
- 加载某个特定的所有类别
$products
if($products){
$products->with('categories')->get();
return view('products',$products);
}
$products
加载具有额外约束的特定类别:
if($products){
$products->with(['categories' => function ($query) {
$query->where('...');
}])->get();;
return view('products',$products);
}
推荐阅读
- tensorflow - 用于车牌识别的预训练 LeNet 模型
- python - OpenCV VideoCapture on Large files looping back to start frame after 4000+ frames
- node.js - React Native 注册表与后端 mongodb 和 node xpress
- javascript - 如何在nodejs的更新查询中将DATE_SUB()作为参数传递
- html - 如何在线条元素之间创建相等的间距
- javascript - 浏览器中的 Rocket Chat 实时 API
- firebase - 通过 Node.js (firebase-admin) 在后台和前台接收 Ionic 移动应用程序的通知
- c# - 在 WPF 中为按钮设置鼠标悬停颜色
- javascript - ReferenceError:您正在尝试在 Jest 环境被拆除后“导入”文件
- angularjs - 每当我命名 ngapp 或尝试使用控制器时,angularjs 都会停止工作