[英]postgresql to php array with column as a index
不確定這是否可行,但我需要從 postgresql 查詢中返回一個 json 對象
說查詢返回這樣的東西
who count
=================
mary 2
had 9
a 12
lamb 9
數據庫有 2 列“who”和“count”,我需要一個直接從 postgresql 返回的 json 對象,該對象解碼為此
index value
---------------
mary 2
had 9
a 12
lamb 9
所以數組的索引將來自“who”列,該數組元素的值將來自“count”列
換句話說,列“who”將是數組的索引,而列“count”將是該數組的值
全部存儲在一個漂亮的小 json 輸出中
我相信這是可以做到的,當有人指出時我會覺得很愚蠢,但我還沒有弄清楚這一點..
有任何想法嗎?
我知道你可以很容易地用 php 循環來完成它,但我只想從數據庫中返回它,而沒有凌亂的 for 循環內容
謝謝
jsonb_object_agg()
將做到這一點:我的表:
| who | count |
| ----- | ----- |
| mary | 2 |
| had | 9 |
| a | 12 |
| lamb | 9 |
SELECT
jsonb_object_agg(col_a, col_b) AS joa
FROM myTable;
此查詢將返回具有 json 值的單行:
{
"a": 12,
"had": 9,
"lamb": 9,
"mary": 2
}
而在 PHP 中,你只需要解碼它:
$myTable = $PDO -> fetchColumn();
$myTableArray = json_decode($myTable);
值得指出的是, jsonb_object_agg() 返回唯一鍵。 所以如果我們INSERT INTO myTable(who, count) VALUES ('mary', 3)
上面的查詢仍然會返回 4 行。 這還不錯,因為您打算將它們用作數組鍵,請記住,您需要控制 myTable.who 中的重復值。
干杯!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.