Здравствуйте.
--
Моя предыстория:
Есть стороннее API -
https://www.bridgeinteractive.com
Документация -
https://rets.ly/docs/platform/
Данное API просто выводит данные о недвижимости в виде json
Есть приложение на Yii2, на котором есть свой API который тоже выводит данные в виде json
Я пытаюсь на выходе объединить SQL запрос из ActiveRecord с полученным из другого API json.
Может я делаю что-то не так, или так сделать нельзя, ведь с Bridge API нельзя сделать связь
Во время коллизии я получаю лишь ключ, по которому могу потом выдёргивать данные недвижимости.
Получается вьюшка из всех сделок, и получение одной конкретной сделки которая отдаёт данные в виде JSON.
Проблема в том что мне надо делать два запроса на две API, и уже на фронте связать два полученных json в один.
Чтобы вы понимали, я могу задать SQL запрос, что-то типа:
SELECT d.*, coalesce(o.key, 0) as realestate FROM deals ...
То есть создать дополнительное поле (столбец), которого нет в БД
(Я сейчас не про запрос, как создать столбец в базе данных)
Так вот
o.key === Bridge API
, если данных нет, и чтобы избежать ошибок, пустую ячейку я заполняю нулём, а столбец, куда будут прилетать данные из Bridge API назову например "realestate".
В случае с SQL в одной базе данных, такой финт провернуть вообще легко, появляется несуществующий столбец, в котором вписываются данные из другой таблицы.
Как я это вижу. Объявляют что у файла JSON заголовок, получаю все записи из БД, получаю по ключу все данные из Bridge API и объединяю в один массив, который пропускаю через цикл, таким образом, объединив разные json в один, через цикл я вывожу все записи уже с объектами (недвижимость).
Какое
НО.
Дело в том, что в Bridge API данные
постоянно меняются кроме ключа,
по которому можно получить данные о недвижимости. Как я понял, обновляется каждую секунду, по крайней мере через библиотеку
axios в React JS, из-за этого лимит постоянно заканчивается, чего не скажешь, если данные приходят через cURL в php.
Объектов недвижимости может быть сколько угодно, хоть 30000 хоть 40000.
Сделок в API тоже может быть сколько угодно.
Я переживаю за нагрузку и за скорость получения данных. Их число растёт, и кто знает сколько данных будет ещё.
Как видите, по данному ключу можно получить данные недвижимости, и такой же ключ есть в API другого сайта. Как лучше связать эти данные в единый json без потери производительности и скорости, пока не понимаю. Может быть кто-то что-то подобное делал. Через
hasOne
я пытался, но видимо не правильно что-то делаю.
public function getRealestate(){
return $this->hasOne(...);
}
Deals::find()->with('realestate')->where(['key' => $key])->asArray()->all();
Что посоветуете. Заранее благодарю за помощь и отзывчивость.