// Вот это вам даст все дочерние категории (активные и не активные)
// ну и потом пройдитесь и сделайте выборку товаров по этим категориям
$category->types('hierarchy-type')->name('catalog', 'category');
$category->where('hierarchy')->page('/store/brand/')->childs(10)
$category->where('is_active')->equals([0,1]);
.....
$returnData = ModelScheduleSlots::with(['getOrderItem'])
->whereHas('getOrderItem', function ($q) {
$q->whereHas('getOrder', function ($q) {
$q->where('status_id', 1);
});
})
Посмотрите в каком ввиде отдается массив $categories, я уже не помню. Приведите его если надо в простой. Чтобы были только id разделов (пример: [123, 6651,2,76])
И далее уже делайте выборку всех страниц в этих разделах:
Если вариант с $pages->where('hierarchy')->id($categories); не поможет (возможно там нельзя передавать массив).
То тогда только вложенным foreach как вы и описали. Но это будет дольше. Потому что будет куча вложенных запросов к базе.