У меня есть большие коллекции авторов с такой структурой:
- authors (id, profile_id, title, name) -> this are 590 authors
У меня также есть 4 коллекции с author.id == author_id
- sales (id, author_id, salesTotal)
- subscribers (id, author_id, subscribersTotal)
- futureEvents (id, author_id, scheduledTotal)
- reservations (id, authors_id, reservationsTotal)
Не всеу авторов есть продажи, подписчики, события будущего и / или бронирования.Коллекции не организованы в каком-либо определенном порядке.
Чтобы построить индексное представление авторов, я делаю цикл FOREACH для всех авторов, поэтому мне нужно объединить все эти пять коллекций в одинthis:
- authors (id, profile_id, title, name, sales, subscribers, futureEvents, reservations)
Как можно объединить все эти коллекции на основе author_id , имея в виду, что каждая коллекция имеет разную длинуи динамически изменяться (новые авторы могут войти в систему, новые продажи, подписчики войти или выйти и т. д.) изо дня в день.Таким образом, индекс может отображать различные значения изо дня в день
Любая идея, как?
РЕДАКТИРОВАТЬ: Я использую LARAVEL, эти коллекции являются результатом каждого издругой запрос.Например:
$authorsSubscribers = DB::table('authors')
->join('subscriptions', 'subscriptions.author_id', '=', 'authors.id')
->groupBy('authors.title')
->selectRaw('authors.id, COUNT(subscriptions.author_id) AS Subscribers')
->get();
В результате все мои коллекции имеют похожую структуру, такую как эта:
Collection {#86071 ▼
#items: array:5 [▼
0 => {#86015 ▼
+"id": 16
+"Subscribers": 269
}
1 => {#86016 ▼
+"id": 49
+"Subscribers": 269
}
2 => {#86017 ▼
+"id": 20
+"Subscribers": 269
}
3 => {#86018 ▼
+"id": 10
+"Subscribers": 269
}
4 => {#86019 ▼
+"id": 11
+"Subscribers": 269
}
]
}
Я не могу сделать только один большой гигантский запрос, потому что я группирую (GroupBy, считая (COUNT), добавляя (SUM) и т. Д.