如何在同一列中使用多个orderby查询?

时间:2019-07-09 08:30:33

标签: php wordpress custom-post-type

我有一个帖子列表,我试图按字母顺序设置其中的一列。问题在于这些帖子在同一列中具有两种不同的值类型之一。

我在下面尝试的代码使我半途而废,它确实使用顶部的那些值之一查询帖子,但仍然不是按字母顺序排列。

$posts_per_page = 10;
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$args = array(
    'post_type' => 'offerter',
    'post_status' => 'publish',
    'posts_per_page' => $posts_per_page,
    'paged' => $paged,
    'meta_key' => 'business_id',
    'meta_value' => $business_id,
    'meta_query' => array(
        'relation' => 'OR',
        'customer_name' => array(
            'key' => 'customer_name',
            'compare' => 'LIKE',
        ),
        'quick_customer_name' => array(
            'key' => 'quick_customer_name',
            'compare' => 'LIKE',
        ),
    ),
    'orderby' => array(
        'customer_name' => 'desc',
        'quick_customer_name' => 'desc',
    )

我试图比较EXISTS和LIKE,这使我获得相同的结果。

2 个答案:

答案 0 :(得分:0)

您可以在查询的最后使用 例如:

$collection = new Collection($put_your_array_here);

// Paginate
$perPage = 10; // Item per page
$currentPage = Input::get('page') - 1; // url.com/test?page=2
$pagedData = $collection->slice($currentPage * $perPage, $perPage)->all();
$collection= Paginator::make($pagedData, count($collection), $perPage)->orderby('customer_name' => 'desc')->orderby('customer_name' => 'desc');

答案 1 :(得分:0)

通过创建第三个自定义字段和将“ customer_name”或“ quick_customer_name”保存到新字段的函数来解决该问题。然后在第三个字段上进行排序。