Всем привет.
Коротко что это делает.
Есть апи которая присылает данные, я хочу их вставить в БД, но что бы избежать дублирования сделал одно поле уникальным в таблице. То что вы видите костыль, а как сделать лучше не знаю, как избавится от форичей?
Суть вопроса как сравнить два массива так что бы остался один с теми записями у которых ай ди не совпадает ни с одной записью ай ди во втором массиве
Есть вот такой фрагмента кода:
$inventoryId = 436;
$this->Model('M_Soap');
$M_Soap = new Soap();
Возвращает многомерный массив
$arrProducts = $M_Soap->getInventoryProducts($inventoryId);
Беру все ай ди из того что пришло
foreach ($arrProducts as $product) {
$arr[] = $product['id'];
}
Делаю селект в БД всех записей если они есть под таким ай ди
$productsInDb = $M_Product->getUniqueRecords($arr);
Сравниваю то что пришло и то что хранится в БД, если есть совпадение то удаляю из того что пришло по ай ди
foreach ($arrProducts as $product) {
foreach ($productsInDb as $productDb){
if ($product['id'] = $productDb['id_supplier']){
unset($arrProducts[$product['id']]);
}
}
}
Вставляю в БД, если вдруг совпадет по ай ди с тем что есть в БД то вставить неполучится (ун индекс на поле)
$M_Product->addInventoryById($arrProducts);