Показать сообщение отдельно
  #1 (permalink)  
Старый 09.03.2014, 13:03
Аватар для Duda.Ml1986@gmail.com
Профессор
Отправить личное сообщение для Duda.Ml1986@gmail.com Посмотреть профиль Найти все сообщения от Duda.Ml1986@gmail.com
 
Регистрация: 01.09.2011
Сообщений: 263

Правильный код, как исправить грабли.
Всем привет.

Коротко что это делает.
Есть апи которая присылает данные, я хочу их вставить в БД, но что бы избежать дублирования сделал одно поле уникальным в таблице. То что вы видите костыль, а как сделать лучше не знаю, как избавится от форичей?

Суть вопроса как сравнить два массива так что бы остался один с теми записями у которых ай ди не совпадает ни с одной записью ай ди во втором массиве

Есть вот такой фрагмента кода:

$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);

Последний раз редактировалось Duda.Ml1986@gmail.com, 09.03.2014 в 13:09.
Ответить с цитированием