Случай, когда использование в менеджере моделей Phalcon не дает правильного значения - PullRequest
0 голосов
/ 13 сентября 2018

При просмотре некоторого кода с моего контроллера я обнаружил странную ошибку в запросе, в основном в случае, когда операторы:

Содержимое базы данных:

столбцы:

category : client or case category
type : title or content
mainpage 1 or 0 (true or false)

значения:

0;0;1

соответствует нормальному выходу:

Case category;title;yes

токовый выход:

Client;Content;No

PHQL:

SELECT content.id,
(CASE content WHEN content.category = 0 THEN 'Case category' WHEN content.category = 1 THEN 'Client' WHEN content.category = 2 THEN 'Case' WHEN content.category = 3 THEN 'Product' WHEN content.category = 4 THEN 'Product category' WHEN content.category = 5 THEN 'Team' WHEN content.category = 6 THEN 'Vacancy' WHEN content.category = 7 THEN 'Reference' WHEN content.category = 8 THEN 'Article' ELSE "Category not found" END) AS category 

FROM Apps\Source\Models\MainContent AS content 
GROUP BY content.id 

Дело в том, что все операторы 'case when' возвращают неверное значение, даже если (например, content.category = 0 в базе данных, но оно возвращает меня) 'Клиентское событие, которое должно получить его для значения 1 )

Если я перевожу утверждение в чистый sql, на всякий случай, чтобы проверить его, оно работает ...

SELECT 
content.id,
(CASE WHEN content.category = 0 THEN 'Case category' WHEN content.category = 1 THEN 'Client' WHEN content.category = 2 THEN 'Case' WHEN content.category = 3 THEN 'Product' WHEN content.category = 4 THEN 'Product category' WHEN content.category = 5 THEN 'Team' WHEN content.category = 6 THEN 'Vacancy' WHEN content.category = 7 THEN 'Reference' WHEN content.category = 8 THEN 'Article' ELSE "Category not found" END) AS category 

FROM main_content AS content 
GROUP BY content.id 

вывод:

Case category;title;yes

Это странность phql?

1 Ответ

0 голосов
/ 13 сентября 2018

Существует разница между обоими утверждениями (необработанный sql - искомый случай, PHQL - простой): в PHQL попробуйте

SELECT content.id,
(CASE WHEN ...

При таком количестве случаев было бы лучше создать категорию"искать таблицу и соединять ее с" main_content "?

...