从WordPress DB获取所有相关数据

时间:2018-08-24 作者:Bon

我在安装了WordPress的DB中有2个自定义表one-to-many 两个表之间的关系。

以下是两张表:

                     posts table
_________________________________________________________________
| id | title | content | category_id | post_order  | post_active |                                        
|____|_______|_________|_____________|_____________|_____________|
| 1  | test1 | testing |     1       |       0     |      1      |
| 2  | test2 | testing |     1       |       1     |      1      |
| 3  | test3 | testing |     2       |       2     |      0      |
| .  | ..... | ....... |     .       |       .     |      .      |
|____|_______|_________|_____________|_____________|_____________|


       categories table
_____________________________________
| c_id | c_name | c_order | c_active |                                       
|______|________|_________|__________|
|   1  |  cat1  |    0    |    1     |
|   2  |  cat2  |    1    |    1     |      
|   3  |  cat3  |    2    |    0     |  
| .    | .....  | ....... |    .     |      
|______|________|_________|__________|
正如您所看到的,每个帖子都有一个类别,使用这两个category_id 中的列posts 表和c_id 中的列categories 桌子

我想显示来自posts 具有相关类别的表。

这就是我所尝试的:

global $wpdb;

$results = $wpdb->get_results("SELECT b.c_name, a.id, TRIM(a.title) AS title, a.content
FROM posts a
INNER JOIN categories b ON a.category_id = b.c_id
WHERE a.post_active = \'1\' AND b.c_active = \'1\'
ORDER BY b.c_order, a.post_order", OBJECT_K );

print_r($results);
但我在每次活动中只获得第一个帖子category:

Array
(
    [cat1] => stdClass Object
        (
            [c_name] => cat1
            [id] => 1
            [title] => test1
            [content] => testing
        ) 

    [cat2] => stdClass Object
        (
            [category_name] => cat2
            [id] => 3
            [title] => test3
            [content] => testing
        ) 
)
出了什么问题以及如何解决?

1 个回复
最合适的回答,由SO网友:user141080 整理而成

您的问题是常量OBJECT\\u K。

在文档中可以看到,此常量确保丢弃重复的键。

从wordpress codex条目:

ARRAY\\u A | ARRAY\\u N | OBJECT | OBJECT\\u K常量中的任意一个。使用前三个中的一个,返回按SQL结果行号从0索引的行数组。每行是一个关联数组(列=>值,…),数字索引数组(0=>值,…),或对象。(->列=值)。With OBJECT_K, return an associative array of row objects keyed by the value of each row\'s first column\'s value. Duplicate keys are discarded.

Wordpress codex: get_results

结束