web-dev-qa-db-ja.com

First_nameが空のユーザーに問い合わせる方法は?

これまでのところ、私はこれら3つのオプションを試してみましたが、3つすべてが機能していません。

オプション1

$options = array(
    'meta_key'     => 'first_name',
    'meta_value'   => '',
    'meta_compare' => '=',
);

$users = get_users( $options );

オプション2

$options = array(
    'meta_key'     => 'first_name',
    'meta_value'   => null,
    'meta_compare' => '=',
);

$users = get_users( $options );

オプション3

$options = array(
    'meta_query' => array(
        array(
            'key'     => 'first_name',
            'compare' => 'NOT EXISTS',
        ),
    )
);
$users = get_users( $options );
1
Sudar

empty stringというメタ値でfirst_nameメタキーを探しているようです。

$options = array(
    'meta_query' => array(
        array(
            'key'     => 'first_name',
            'value'   => '',
            'compare' => '=',
        ),
    )
);
$users = get_users( $options );

これは、この種のSQLクエリを生成します。

SELECT wp_users.* 
FROM wp_users 
INNER JOIN wp_usermeta ON ( wp_users.ID = wp_usermeta.user_id ) 
WHERE 
    1=1 AND ( ( wp_usermeta.meta_key = 'first_name' AND wp_usermeta.meta_value = '' ) ) 
ORDER BY user_login ASC 

ご了承ください

$options = array(
    'meta_key'     => 'first_name',
    'meta_value'   => '',
    'meta_compare' => '=',
);
$users = get_users( $options );

この種のSQLクエリを生成します。

SELECT wp_users.* 
FROM wp_users 
INNER JOIN wp_usermeta ON ( wp_users.ID = wp_usermeta.user_id ) 
WHERE 1=1 AND ( wp_usermeta.meta_key = 'first_name' ) 
ORDER BY user_login ASC ;
1
birgire

コードの下で使用されます。データベース内のfirst_nameキーがないか、空のfirst_nameを持つすべてのデータを返します。

$args = array(
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key' => 'first_name',
            'value' => '',
            'compare' => '=',
        ),
        array(
            'key' => 'first_name',
            'value' => '',
            'compare' => 'NOT EXISTS',
        ),
    )
);
$users = get_users( $args );
var_dump($users);exit;
5
Jignesh Patel