В настоящее время я использую код ниже в 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.
Я что-то пропустил? Извините, если это глупая ошибка.
Спасибо.
Для выбора использовать 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()
вернет первое значение, найденное в результате.
Других решений пока нет …