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>