Я пытаюсь получить массив товаров из базы данных MySQL, чтобы показать определенные c товары в зависимости от идентификатора производителя в корзине (prestashop). Я сделал этот запрос
$cart_items = $cartObj->getProducts();
if (is_array($cart_items) && count($cart_items) > 0) {
$cart_ids = array();
foreach ($cart_items as $cart_item) {
$cart_ids[] = $cart_item['id_product'];
}
$arrayKeys = array_keys($cart_ids);
$cart_ids[$arrayKeys[0]];
$id_manufacturers = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT id_manufacturer
FROM `'._DB_PREFIX_.'product`
WHERE id_product IN (' . implode(',', array_map('intval', $cart_ids)) . ')
');
$items = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
select id_product
from `'._DB_PREFIX_.'product` p
where p.id_manufacturer IN (' . implode(',', array_map('intval', $id_manufacturers)) . ')
'.(count($excluded_ids) ? ' AND p.id_product NOT IN (' . implode(', ', $excluded_ids) . ')' : '').'
group by p.id_product
limit '.(int)$limit.'
');
}
И ничего не появляется. Я знаю, что когда я использую Db :: getInstance-> getValue в $ id_category_default при попытке получить продукты только от 1 производителя, все работает нормально. И когда я добавляю тестовый массив для $ items, таких как (1, 2, 3, 4, 5), продукты также отображаются с этим идентификатором производителя. Но когда я пытаюсь получить массив id_manufacturer и показать продукты, основанные на этом массиве, ничего не появляется. Есть ли другой способ создать массив для id_manufacturers?
Структура базы данных выглядит примерно так
+------+-------+--------------------------------------------+
| id_product | id_manufacturer | content |
+------+-------+--------------------------------------------+
| 1 | 1 | ... |
| 2 | 1 | ... |
| 3 | 2 | ... |
| 4 | 3 | ... |
+------+-------+--------------------------------------------+
И мне нужен массив идентификаторов id_manufacturer, например (1, 2, 3)