get_meta_sql() WP 3.2.0

За переданими параметрами створює JOIN і WHERE частин SQL запиту для метаданих, які можна використовувати в основному запиті.

Це обгортка для класу WP_Meta_Query .

Працює на основі:
WP_Meta_Query()
1 раз – 0.000172 сек
(швидко) | 50000 разів – 4.48 сек
(швидко)

Хуків немає.

Повертає

Массив. Асоціативний масив з JOIN та WHERE ключами:

array(
	'join' => 'JOIN SQL рядок',
	'where' => 'WHERE SQL рядок'
)

Використання

get_meta_sql( $meta_query, $type, $primary_table, $primary_id_column, $context );
$meta_query
(масив) (обов’язковий)
Параметри запиту. Дивіться опис
WP_Meta_Query .
$type
(рядок) (обов’язковий)
Тип метаданих. Наприклад: ‘user’, ‘post’, ‘comment’.

В об’єкті
$wpdb повинна бути зареєстрована таблиця з назвою
$type .’meta’, наприклад, якщо ми вкажемо тут ‘foo’, то повинна існувати таблиця
$wpdb->foometa . Якщо такої таблиці немає, цей клас працювати не буде!
$primary_table
(рядок) (обов’язковий)
Назва основної таблиці, до якої належить таблиця метаданих. Наприклад
wp_posts ,
wp_comments ,
wp_users .
$primary_id_column
(рядок) (обов’язковий)
Назва ключової стовпчика основної таблиці, вказаної в
$primary_table . Для
wp_posts
ID , для
wp_users
ID , для
wp_comments
comment_ID .
$context
(об’єкт)
Об’єкт основного запиту. Цей параметр ніде не використовується, а передається у фільтр
get_meta_sql.


Типово: null

Приклади

0

#1 Демонстрація використання

$meta_query = array(
	array(
		'key' => 'key_name',
		'value' => 'значення поля',
		'compare' => '=' // не обов'язково, за умовчанням '=' або 'IN' (якщо value масив)
	)
);

$mq_sql = get_meta_sql( $meta_query, 'post', 'wp_posts', 'ID');

$mq_sql міститиме:

Array
(
	[join] => INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id )
	[where] => AND (
		( wp_postmeta.meta_key = 'key_name' AND CAST(wp_postmeta.meta_value AS CHAR) = 'значення поля' )
	)
)
0

#2 Ще приклади

Дивіться опис WP_Meta_Query

нотатки

список змін

З версії 3.2.0Введено.

Код get_meta_sql() WP 6.0.2

function get_meta_sql( $meta_query, $type, $primary_table, $primary_id_column, $context = null ) {
	$meta_query_obj = новий WP_Meta_Query( $meta_query );
	return $meta_query_obj->get_sql( $type, $primary_table, $primary_id_column, $context );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *