Автор Тема: Как получить массив всех строк  (Прочитано 414 раз)

28 Май 2017, 14:34:14
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем привет.
Мозг кипит и никак не остывает
Пытаюсь получить массив из id складов текущего магазина в \controllers\admin\AdminStockInstantStateController.php
Готовлю запрос:
$query123 = new DbQuery();
$query123->select('id_warehouse');
$query123->from('warehouse_shop');
$query123->where('id_shop = '.$id_shop);
Далее, если ставлю
$res = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($query123);то в массиве только id ПЕРВОГО из всех складов текущего магазина (это и понятно getRow выдает одну строку)
а если
$res = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query123);то в массиве id первого из всех складов ВСЕХ магазинов, т.е. id=1 (такое ощущение, что игнорируется WHERE и добавляется LIMIT 1)

Выручайте.


28 Май 2017, 15:09:23
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
/*
 * Returns a list of warehouses, or locations, or stores.
 */
Warehouse::Warehouse::getWarehouses();
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
28 Май 2017, 15:26:40
Ответ #2
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Дак там по сути все тоже самое делается. Почему у меня-то не работает с executeS ?
28 Май 2017, 16:20:32
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($query);Выдаст одно значение, тут все правильно. А с executeS у тебя скорее всего id магазина не определяет.
28 Май 2017, 16:21:29
Ответ #4
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Все взрыв мозга неизбежен
Если массив id складов заполняю руками, то такой код работает корректно:
$id_shop=4;
$arr123['0'] = 3;
$arr123['1'] = 4;
$item['real_quantity'] = $manager->getProductRealQuantities($item['id_product'],
                                                                            $item['id_product_attribute'],
                                                                            $arr123; ,
                                                                            true);

А вот такой
$id_shop=4;
$arr123 = Warehouse::getWarehouses(false,$id_shop);
$item['real_quantity'] = $manager->getProductRealQuantities($item['id_product'],
                                                                            $item['id_product_attribute'],
                                                                            $arr123; ,
                                                                            true);

"Реальное наличие" считает для склада с id=1