Итак, мой процесс такой,
вызов API для файла json, извлечение данных, которые выглядят примерно так: (давайте назовем этот вызов API)
[
{
"id": 5123
"title": "Title 1",
"sizeOnDisk": 2040422598,
"status": "released",
"website": "",
...
},
{
"id": 6123
"title": "Title 2",
"sizeOnDisk": 2040422598,
"status": "released",
"website": "",
...
},
{
"id": 7123
"title": "Title 3",
"sizeOnDisk": 2040422598,
"status": "released",
"website": "",
...
},
]
Теперь После того, как я получу эти данные, я получаю все данные из таблицы базы данных, которая выглядит примерно так:
| id | title | api_id |
------------------------
| 10 | Title 1 | 5123 |
| 12 | Title 3 | 7123 |
Теперь, если вы заметили, я пропускаю Название 2 из API в базе данных. Я пытаюсь вернуть недостающие элементы из API, которых нет в базе данных.
На данный момент я выяснил, как вернуть идентификаторы отсутствующих элементов, например:
$api = new Api();
$remoteIds = collect(json_decode(file_get_contents($api->url('movie'))))->pluck('id');
$localIds = Movie::all()->pluck('radarr_id');
$diff = $remoteIds->diff($localIds)->flatten();
return $diff;
... но мне нужно вернуть всю строку. Если я удаляю ->pluck('id')
, я получаю ошибку Object of class stdClass could not be converted to string
..
Так как я могу вернуть все данные о недостающем элементе из API? Я понимаю, что могу сделать array_intersect_key
, но ключи разные ..