Как вы работаете с мета-ключом и значениями базы данных? - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь использовать SQL для получения мета-ключей и значений элемента заказа Woocommerce, чтобы я мог суммировать информацию в своем собственном отчете, но я действительно пытаюсь извлечь мета-ключи и значения в виде столбцов. Может ли кто-нибудь привести примеры SQL? Есть ли Wordpress API, который я могу использовать для метаданных?

Я попытался создать следующий SQL в качестве основы для расширения запроса информации о продукте. Возвращает правильный тип данных, но только одну строку:

SELECT O.order_item_id, O.order_item_name,
    MAX(IF(OIM.meta_key = 'class', OIM.meta_value, NULL)) AS class
FROM wp_woocommerce_order_items AS O
LEFT JOIN wp_woocommerce_order_itemmeta AS OIM on O.order_item_id = 
OIM.order_item_id
WHERE O.order_item_name='Smiths Night School';

Спасибо

Ответы [ 2 ]

3 голосов
/ 28 марта 2019

Я рад, что ты это понял! Это лучший способ узнать вещи. Чтобы помочь вам, я покажу вам правильный способ сделать это в WordPress (PHP):

<?php

//DB
global $wpdb; 

//Get results from the database
$results = $wpdb->get_results( "SELECT O.order_item_id, O.order_item_name, MAX(CASE WHEN OIM.meta_key = 'class' THEN OIM.meta_value END) AS 'class', MAX(CASE WHEN OIM.meta_key = 'fee-type' THEN OIM.meta_value END) AS 'fees' FROM wp_woocommerce_order_items O INNER JOIN wp_woocommerce_order_itemmeta OIM ON O.order_item_id = OIM.order_item_id WHERE O.order_item_name='Smiths Night School' GROUP BY O.order_item_id, O.order_item_name" );

foreach ( $results as $result ) {
    echo $result->your_field_from_the_table;
}

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

Вам также не нужно определять password и user базы данных в любом файле PHP (что вам нужно сделать, если вы используете функциональность базы данных PHP). Если вы используете wpdb, эта информация поступает непосредственно из файла wp-config.php, который немного более безопасен.

1 голос
/ 28 марта 2019

Следующий код работает хорошо.Этот запрос возвращает информацию о классе и типе оплаты для каждого order_item_name «Smiths Night School».

SELECT 
  O.order_item_id, O.order_item_name,
  MAX(CASE WHEN OIM.meta_key = 'class' THEN OIM.meta_value END) AS 'class',
  MAX(CASE WHEN OIM.meta_key = 'fee-type' THEN OIM.meta_value END) AS 'fees'
FROM wp_woocommerce_order_items O
INNER JOIN wp_woocommerce_order_itemmeta OIM ON O.order_item_id = OIM.order_item_id
WHERE O.order_item_name='Smiths Night School'
GROUP BY O.order_item_id, O.order_item_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...