Как подсчитать значения метаключей записи для всех записей в базе данных


В метаданных моего поста у меня есть следующий "ключ" для каждого поста: "image_details", типичным значением которого является массив, такой как:

a:3:{s:23:"info_window_bg_image_id";s:3:"128";s:12:"colour_start";s:7:"#000000";s:10:"colour_end";s:7:"#b7b7b7";}

В приведенном выше примере - info_window_bg_image_id равно 128

В идеале я хотел бы узнать, для скольких сообщений image_details['info_window_bg_image_id'] установлено значение 128, но я бы согласился выяснить, установлено ли какое-либо из сообщений это значение.

Единственный способ, которым я могу это сделать (с моими ограниченными знаниями), - это что-то вроде из:

  1. Извлеките массив каждой записи в базе данных

  2. Для каждого по массиву, используя идентификаторы

  3. Используйте get_post_meta(идентификатор, ключ), чтобы получить ключ "image_details"

  4. Проверьте значение элемента "info_window_bg_image_id" результата, чтобы увидеть, соответствует ли он значению.

Похоже, что это будет тяжелая нагрузка, потому что мне пришлось бы делать это несколько раз, чтобы проверить наличие других значений.

Является есть более простой способ сделать это? Возможно, с помощью прямого SQL-запроса через класс WP_Query?

Просто повторю, что моим идеалом было бы получить результат, который даст мне знать, что есть:

  • в 6 сообщениях для post_meta image_details "info_window_bg_image_id" установлено значение 128
  • в 10 сообщениях для post_meta image_details "info_window_bg_image_id" установлено значение 127
  • 0 сообщений имеют значение post_meta image_details "info_window_bg_image_id", равное 126

И т. Д. и т. Д.

Но я бы также будьте довольны результатом, который просто говорит:

используется 128, используется 127, 126 не используется и т. Д.

Author: s_ha_dum, 2014-04-06

1 answers

У вас структурная проблема с вашими данными. Сериализованные данные в базе данных ужасны, если вам нужно искать по частям этих сериализованных данных.

Повторение данных - это, пожалуй, единственное решение, которое вы дали структуре данных, с которой имеете дело.

Однако, на мой взгляд, правильным решением является изменение структуры данных таким образом, чтобы вы сохраняли детализированные фрагменты данных в базе данных. Другими словами, используйте множество разных ключей для значений, которые вам нужно найти.

 1
Author: s_ha_dum, 2017-04-13 12:37:54