Psql에 json array넣기

#주의할 점 jsonb형식을 사용하고 ''로 array를 감싸고 key와 value는 ""로 감싸야한다.
insert into 
	tableName (json) 
values ('[{"value":"val1","text":"안녕하세요!"},{"value": "val2","text": "안녕하세요2"}]');

php배열에 key-value형식의 값들 넣기

위에서 만든 psql의 json형식을 view로 뿌려주기 위해선 Model에서 받아서 Controller에서 정제해 준다. ci4(코드이그나이터4) 기준


Model 만들기

<?php namespace App\\Models;

use CodeIgniter\\Model;

class MyModel extends Model
{
		public function findAllRow() {
        $query = $this->db->query('SELECT * FROM tableName');
        return $query->getResult();
    }
}

Controller에서 정제하기

View에서 필요한 자료의 형태를 미리 작성해 봅니다.

//가장 큰 배열 안에 작은 json배열들이 들어가는 형태입니다.
[
	[
		{
			value : "val1",
			text : "안녕하세요"
		},
		{
			value : "val2",
			text : "안녕하세요"
		},
	],
	...
]

이제 형태에 맞게 변형합니다. 먼저 print_r 또는 var_dump를 통해 현재 형태를 확인해줍니다.

Array
(
 (1) => [{"value":"val1","text":"안녕하세요"},{"value": "val2","text": "안녕하세요"}]
 (2) => ...
 ...
)

Controller에서 정제해줍니다.

<?php
namespace App\\Controllers;

use CodeIgniter\\Model;
use App\\Models\\MyModel;

class MyController extends BaseController
{
	public function index()
    $myModel = new MyModel(); // 모델을 불러옵니다.
    $result =  $myModel->findAllRow(); // 모델에서 필요한 메서드를 호출합니다. 저희는 query 결과를 가져오는 메서드를 호출했습니다.
		//이 부분에서 데이터를 정제합니다. 하지만 이미 같은 형태이므로 바로 담겠습니다. 
		$data = [
			'result'=>$result
		];	// 정제한 결과를 담아줍니다.	
		
		return view('myapp/view',$data); //ci4에서 뷰로 정제된 데이터를 넘기는 함수를 호출합니다. 이 때 첫 번째 파라미터로 파일의 경로를 줍니다.
	}
}

View에서 데이터를 뿌려줍니다.

<?php
//myapp/view 파일
<script> 
const queryResult =  <?=$result?>; //php 파일의 script 태그 내에서 결과를 받아옵니다. script에서는 물론 html부분에서도 php코드를 사용할 수 있습니다.
console.log(queryResult); //콘솔로 찍어보면 json array 형태의 파일이 나옵니다.
//[{…}, {…}]
</script>

+ Recent posts