Laravel中如何提取查询结果数字、关联遍历并返回变量?
Laravel查询数据提取与关联显示解决方案
首先优化你的查询逻辑,没必要针对同一条件两次查询数据库,一次查询就能获取所需的两个字段:
$billProducts = BillProduct::where('bill_id', $bill->id)->select('quantity', 'product_id')->get();
1. 提取纯数字数组
利用Laravel集合的pluck方法,可直接提取指定字段的数值并转为纯数字数组:
// 提取所有quantity的数字数组,结果如 [15, 18, ...] $quantities = $billProducts->pluck('quantity')->toArray(); // 提取所有product_id的数字数组,结果如 [2, 3, ...] $productIds = $billProducts->pluck('product_id')->toArray();
2. 在foreach中关联显示对应数据
直接循环查询得到的集合,每条记录天然包含对应的quantity和product_id,能保证数据对应关系准确:
foreach ($billProducts as $item) { // 输出每组对应数据,示例:15,2 echo "{$item->quantity},{$item->product_id}<br>"; // 也可根据需求做其他业务处理 }
3. 以两个变量形式返回处理结果
结合pluck方法提取的数组,直接返回两个变量即可,比如在控制器中传递给视图:
// 先获取完整数据集合 $billProducts = BillProduct::where('bill_id', $bill->id)->select('quantity', 'product_id')->get(); // 提取两个纯数字数组 $quantities = $billProducts->pluck('quantity')->toArray(); $productIds = $billProducts->pluck('product_id')->toArray(); // 返回变量,示例:传递给视图 return view('your-view-name', compact('quantities', 'productIds'));
补充说明
你原本用get('quantity')返回的是包含对象的嵌套集合,而pluck方法能直接提取字段值,避免多层嵌套的处理麻烦;同时一次查询相比两次查询能减少数据库请求,提升性能。
内容的提问来源于stack exchange,提问作者Mehdi Bakhtiari
相关产品推荐
相关产品推荐

