MySQL JSON_OBJECTAGG — Как исправить ошибку «PDOException: SQLSTATE[22032]: <>: 3158 JSON-документы могут не содержать NPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 MySQL JSON_OBJECTAGG — Как исправить ошибку «PDOException: SQLSTATE[22032]: <>: 3158 JSON-документы могут не содержать N

Сообщение Anonymous »

Я реализую классическую «систему тегов из трех таблиц», используя MySQL 8 и PHP:
  • первая таблица («Сообщения») содержит сообщения. (PostId, PostTitle, PostSummary, ...);
  • вторая таблица («Теги») содержит теги (TagId, TagName, TagSlug);
    < li>третья таблица («TagsMap») содержит теги, связанные с каждым сообщением (PostId, TagId).
Запрос, который я написал, чтобы показать первые 10 сообщения:

Код: Выделить всё

SELECT p.PostTitle, p.PostSummary, ...,
JSON_OBJECTAGG(t.TagSlug, t.TagName)
FROM (SELECT ... FROM Posts WHERE ... ORDER BY ... DESC LIMIT 10) p
LEFT JOIN TagsMap tm ON p.PostId = tm.TagId
LEFT JOIN Tags t ON tm.TagName = t.TagId
GROUP BY p.PostId
ORDER BY p.PostId DESC
Это работает.
Проблема возникает, когда у публикации нет связанных тегов. В этом случае я получаю следующую ошибку:

Код: Выделить всё

"PDOException: SQLSTATE[22032]: : 3158 JSON documents may not contain NULL member names".
Другими словами, ключ JSON_OBJECTAGG (t.TagSlug) не может быть нулевым.
Как это исправить?
SQL Fiddle
Ожидаемый результат при использовании JSON_OBJECTAGG:
Заголовок 3 | Резюме 3 | NULL
Заголовок 2 | Резюме 2 | {"tag-slug-2": "имя тега 2", "tag-slug-3": "имя тега 3"
Заголовок 1 | Резюме 1 | {"tag-slug-1": "имя тега 1"

Подробнее здесь: https://stackoverflow.com/questions/786 ... -3158-json
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»