Oke, langsung aja penjelasannya.
Dimulai dari sebuah kasus, dimana saya ingin mengambil data, dengan kondisi nya one to many seperti pada gambar dibawah (Dibaca dari kiri ke kanan).
Sebenarnya data one-to-many seperti diatas bisa di ambil menggunakan query sql biasa.
Contoh :
select u.url, (select c.categoryid from category c
where c.categoryid = u.categoryid) from url u
Namun outputnya tak sesuai harapan, yang muncul jadinya multi row
url | categoryid
———————
1 | 1
1 | 2
2 | 1
Sedangkan yang dibutuhkan adalah dengan struktur seperti ini
url | categoryid
———————
1 | 1,2
2 | 1
Dan ternyata PostgreSQL bisa menjawabnya, dengan query subselect dilanjutkan dengan tulisan array. Hal tersebut bisa dilakukan, ini dia bentuk querynya:
select u.url, (select array(select c.categoryid from category c
where c.categoryid = u.categoryid))as categoryid from url u
Dan ini dia outputnya:
url | categoryid
———————
1 | {1,2}
2 | 1
Jadi bentuk PostgreSQL array mirip seperti JSON, namun untuk menkonversikannya tidak hanya menggunakan fungsi json_decode(), ada trik tersendiri ini dia.
<?php
$pgsqlArr = ‘{1,2,3,4}’;
preg_match(‘/^{(.*)}$/’, $pgsqlArr, $matches);
$phpArr = str_getcsv($matches[1]);
print_r($phpArr);
?>
Dengan begitu data berhasil dibentuk ke dalam array PHP, dan bisa digunakan PHP.
Output:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
Selesai sudah, penjelasan saya mengenai Berkenalan Dengan PostgreSQL Array, Dan Mengkonversikan ke PHP Array . Jika ada yang ingin ditanyakan, sobat bisa mengirimnya lewat komentar post ini.
Sumber :
http://www.mkyong.com/database/convert-subquery-result-to-array/
http://php.net/manual/en/ref.pgsql.php