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);
});
});
有这个代码:
$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);
});
});