Laravel 8 whereHas 和 whereBetween 无效

Laravel 8 whereHas and whereBetween has no effect

有这个代码:

$resultCards = Posts::with('subcategory')->whereHas('subcategory', function($q) use ($main_categories,$sub_categories)  {
                $q->whereIn('id', $sub_categories);
                $q->orWhereHas('category', function($query) use ($main_categories) {
                    $query->whereIn('id', $main_categories);
                });
            })

这有效并正确获取相关记录。

现在我想像这样过滤结果:

$resultCards->whereBetween('price', [0,3500]);
$results = $resultCards->paginate(5);

这不会改变结果。如果我删除其中一个 whereHas,它确实有效。有什么解决办法吗?

我实际上把事情复杂化了。这有效:

$resultCards = Posts::with('subcategory')->whereHas('subcategory', function($q) use ($main_categories)  {                
                $q->whereHas('category', function($query) use ($main_categories) {
                    $query->whereIn('id', $main_categories);
                });
            });