/** * Sets carriers assigned to the product. * * @param int[] $carrier_list */ public function setCarriers($carrier_list) { $data = []; foreach ($carrier_list as $carrier) { $data[] = [ 'id_product' => (int) $this->id, 'id_carrier_reference' => (int) $carrier, 'id_shop' => (int) $this->id_shop, ]; } Db::getInstance()->execute( 'DELETE FROM `' . _DB_PREFIX_ . 'product_carrier` WHERE id_product = ' . (int) $this->id . ' AND id_shop = ' . (int) $this->id_shop ); $unique_array = []; foreach ($data as $sub_array) { if (!in_array($sub_array, $unique_array)) { $unique_array[] = $sub_array; } } if (count($unique_array)) { Db::getInstance()->insert('product_carrier', $unique_array, false, true, Db::INSERT_IGNORE); } }
This is a function from Product.php
Db::INSERT_IGNORE does not write a duplicate record to the database on an index collision. You wrote that you were trying to somehow add records to the database. Incorrect recording may have occurred and this causes a problem with saving new records.