首页 > 解决方案 > Laravel 嵌套急切加载特定列在主要关系中的 where 条件

问题描述

$wo = Warehouse_other_receive_detail::with('item_info.product_sub_group')
    ->where('item_info.product_sub_group->sub_group_id', 2)
    ->get();

如何在where条件下选择关系后的特定列?

标签: laraveleloquenteager-loadingeager

解决方案


您可以使用with()

$wo = Warehouse_other_receive_detail::with(['item_info.product_sub_group' => function($productSubGroup) {
        $productSubGroup->where('sub_group_id', '=', 2);
    }])
    ->get();

如果你只想要Warehouse_other_receive_detail那些product_sub_group->sub_group_id = 2有用的having()

$wo = Warehouse_other_receive_detail::having('item_info.product_sub_group', function($productSubGroup) {
        $productSubGroup->where('sub_group_id', '=', 2);
    })
    ->with(['item_info.product_sub_group' => function($productSubGroup) {
        $productSubGroup->where('sub_group_id', '=', 2);
    }])
    ->get();

推荐阅读