У меня есть модель в Laravel под названием Player
. Эти данные игрока извлекаются из внешнего API. Я пытаюсь обновлять эти внешние данные по расписанию из внешнего API. Внешние данные API являются авторитетным источником того, что должно быть в таблице players
.
В настоящее время у меня есть две коллекции, одна - это данные из базы данных, другая - данные внешнего API. Я построил новые модели Player
в коллекции на основе данных API.
По сути, сейчас у меня есть следующее:
Collection $playersInDatabase; // Eloquent Collection of type Player
Collection $playersFromApi; // Collection of type Player
Данные $playersFromApi
- это просто JSON Данные API преобразованы в новые модели Player и добавлены в коллекцию.
Моя проблема в том, что я не могу просто стереть всю таблицу players
, поскольку я изменяю только подмножество таблицы за раз. Есть ли эффективный способ использовать Laravel для сравнения этих двух? Я хочу добавить любые новые модели Player в базу данных, которые не существуют, обновить любую существующую модель Player, которая имеет разные данные, а затем также удалить все записи, которых в данных API больше нет, но которые все еще находятся в базе данных (устаревшие записи) .
Единственный способ, который я могу придумать для этого, заключается в многократном повторении коллекций для выполнения sh того, что я хочу сделать, и я чувствую, что есть более простой и элегантный способ сделать это, лучше используя каркас.
Вот как выглядит таблица players
для справки. В настоящее время я использую данные сеялки: