在 laravel 10 中使用 whereHas 过滤数据不起作用

问题描述 投票:0回答:1

我的程序是这样的=

$listreq2 = OutboundRequest::with('outboundmaterialrequest')
->whereIn('id', $outboundIds)
->whereHas('outboundmaterialrequest', function ($query) use ($ids) {
    $query->whereIn('id', $ids);
})->get();

为什么我的数据过滤器

->whereHas('outbound material request', function ($query) use ($ids) {
不起作用 $ids 的内容例如 = 2,3

但所有出库材料请求数据均出现

laravel eloquent laravel-10
1个回答
0
投票

您编写了错误的查询,您正在使用 with 子句,该子句将始终返回数据,并且过滤器在这种情况下将无法按照您的预期工作。你的查询应该是这样的。


$listreq2 = OutboundRequest::query()
    ->whereIn('id', $outboundIds)
    ->withWhereHas('outboundmaterialrequest', function ($query) use ($ids) {
        $query->whereIn('id', $ids);
    })->get();

© www.soinside.com 2019 - 2024. All rights reserved.