我在安装了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
)
)
出了什么问题以及如何解决?
最合适的回答,由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