Я создаю настраиваемые атрибуты товара в интернет-магазине - каждый атрибут может иметь данные различного типа, каждый тип данных хранится в отдельном столбце с использованием соответствующего типа данных mysql.
У меня есть запрос типа:
SELECT
products.id AS id,
products.sku AS sku,
products.name AS name,
products.url_key AS url_key,
attributes.name AS attribute,
CASE
WHEN `attribute_types`.`type` = 'text'
THEN product_attribute_values.value_text
WHEN `attribute_types`.`type` = 'float'
THEN product_attribute_values.value_float
WHEN `attribute_types`.`type` = 'price'
THEN product_attribute_values.value_float
WHEN `attribute_types`.`type` = 'integer'
THEN product_attribute_values.value_integer
WHEN `attribute_types`.`type` = 'multiple'
THEN product_attribute_values.value_text
WHEN `attribute_types`.`type` = 'dropdown'
THEN product_attribute_values.value_text
WHEN `attribute_types`.`type` = 'date'
THEN product_attribute_values.value_date
WHEN `attribute_types`.`type` = 'textarea'
THEN product_attribute_values.value_textarea
END as value
from (...)
Теперь проблема в том, что когда attribute_types
. type
равно? Some-type? я хочу, чтобы он возвращал значение, поскольку оно хранится в таблице product_attribute_values
.
В настоящее время я получаю BLOb каждый раз.
Должен ли я использовать приведение типов или есть какая-то закулисная магия, о которой я не знаю, ИЛИ, может быть, есть лучшая альтернатива?
EDIT:
Кажется, все в порядке (я проверяю цену с плавающей точкой), пока я не добавлю условие для TEXT (textarea).