Prestashop 1.6.1.14 — Запрос к базе данных возвращает 1 при выполнении

В настоящее время я использую код ниже в Prestashop, чтобы получить идентификатор корзины.

    public function hookDisplayPDFInvoice($params) {

$order_invoice = $params['object'];
$id_order = (int)$order_invoice->id_order;

$sql = 'SELECT id_cart FROM '._DB_PREFIX_.'orders WHERE id_order="'.$id_order.'"';
//example id_cart
$id_cart = Db::getInstance()->execute($sql);
return $id_cart;

В базе данных есть id_cart и id_timeslot. Таблица называется ps_cart_timeslot.

Я довольно застрял, потому что я озадачен тем, почему возвращаемое значение равно 1 для любых данных, которые я получаю.

$ id_order в порядке, он возвращает правильное значение. Любые данные, которые я запрашиваю, вернут 1.

Я что-то пропустил? Извините, если это глупая ошибка.

Спасибо.

0

Решение

Для выбора использовать Db::getInstance()->executeS($sql); или использовать одно значение Db::getInstance()->getValue($sql);

Однако начиная с PS 1.6 вы должны использовать построитель запросов.

$query = new DbQuery();
$query->select('id_cart')
->from('orders')
->where('id_order = ' . (int)$id_order);
Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query);
// Or array of values
Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query);

execute() метод возвращает только правда или ложь в то время как executeS() вернет массив результатов выбора (метод может использоваться только для запросов выбора) и getValue() вернет первое значение, найденное в результате.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector