Laravel关联表查询:如何按ID筛选关联拆分订单数据
Laravel关联表按关联ID筛选方案
根据你的需求,要在查询CollectionOrder时对关联的dividedOrder按ID筛选,分两种常见场景提供解决方案:
场景1:加载指定ID的拆分订单关联数据
如果只想加载当前CollectionOrder下特定ID的dividedOrder及其嵌套关联,可在with方法中通过闭包筛选关联:
// 定义要筛选的拆分订单ID(单个或多个) $targetDividedIds = [1, 2]; // 替换为你实际需要的ID $data = CollectionOrder::with([ 'dividedOrder' => function ($query) use ($targetDividedIds) { // 单个ID用where,多个用whereIn $query->whereIn('id', $targetDividedIds); }, 'dividedOrder.orderDividedPiece', 'dividedOrder.orderDividedPiece.CollectionColorSizeBarcode' ])->find($request->order_id);
场景2:筛选出关联指定ID拆分订单的主订单
如果需要确保查询到的CollectionOrder必须关联了指定ID的dividedOrder,则使用whereHas约束主模型:
$targetDividedIds = [1, 2]; $data = CollectionOrder::with([ 'dividedOrder', 'dividedOrder.orderDividedPiece', 'dividedOrder.orderDividedPiece.CollectionColorSizeBarcode' ])->whereHas('dividedOrder', function ($query) use ($targetDividedIds) { $query->whereIn('id', $targetDividedIds); })->find($request->order_id);
说明
- 单个ID筛选时,将
whereIn替换为where('id', $singleId)即可。 - 嵌套关联(
orderDividedPiece、CollectionColorSizeBarcode)会自动跟随筛选后的dividedOrder加载,无需额外处理。
内容的提问来源于stack exchange,提问作者onur
相关产品推荐
相关产品推荐

