Я работаю с PrestaShop 1.6.0.9MySQL запросов фильтрации
Я использую функцию getFirstMessage(), который возвратит сообщение системой или пользователем, если они посылают один для отображения на счете-фактуре. Тем не менее, я боюсь с этим SQL здесь.
<?php
Class Order extends OrderCore {
public function getFirstMessage()
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT `message`
FROM `'._DB_PREFIX_.'message`
WHERE `id_order` = '.(int)$this->id.'
ORDER BY `id_message`
');
}
}
Когда заказчик что-то заказывает, набор сообщений по умолчанию имеет значение «оплата принята» или «ошибка платежа».
Я хочу сделать так, чтобы он не возвращал сообщение, если сообщение «принимает платеж», поэтому я сделал это.
<?php
Class Order extends OrderCore {
public function getFirstMessage()
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT `message`
FROM `'._DB_PREFIX_.'message`
WHERE (`id_order` = '.(int)$this->id.')
AND (`message` != "Payment accepted")
ORDER BY `id_message`
');
}
}
Но это не сработало, поскольку оно все еще возвратило «принятую оплату», поэтому я попробовал это.
<?php
Class Order extends OrderCore {
public function getFirstMessage()
{
$sql_val = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT `message`
FROM `'._DB_PREFIX_.'message`
WHERE (`id_order` = '.(int)$this->id.')
AND (`message` != "Payment accepted")
ORDER BY `id_message`
');
if(
$sql_val == "Payment accepted"
)
{
return "No Message";
} else {
return $sql_val;
}
}
}
Это тоже не удалось. Итак, теперь я хочу получить некоторые предложения о том, как я могу справиться с этим?
может быть, ваша проблема просто так чувствительны, попробуйте '(\' message \ '! = 'payment accepted')' также, используйте одинарные кавычки, а не двойные кавычки со строками –
Вот как это сообщение находится в базе данных, просто заглавный П. Кроме того, я не могу использовать одинарные кавычки, как тогда Принимается оплата станет частью конкатенации, которая затем выдаст ошибку, потому что она должна быть строкой – ProEvilz
Вы можете и должны использовать одинарные кавычки. потому что двойные кавычки в sql означают, что вы используете имя поля. Попробуйте следующим образом: '(\' message \ '! = \ 'Принимается платеж \')'. –