2017-12-25 12 views
0

에서 JSON 형식으로 데이터베이스에 필터를 적용하는 방법은 '가 문학'이 테이블에 단 하나의 열이라는 테이블의 데이터베이스가 아래에 주어진 JSON 형식의 데이터를 한 것으로 "item_details"-는 CodeIgniter의

{ 
    "book":[ 
      { 
       "language":"English", 
       "author":["Y.Nikhilendra","Paresh Khairnar","Madhabendra Rout"] 
      }, 
      { 
       "language":"English", 
       "author":["Sai Seetharam Nomula"] 
      } 
     ], 
    "diary":[ 
      { 
       "language":"Hindi", 
       "author":["Partha Banerjee"] 
      }, 
      { 
       "laguage":"English", 
       "author":["Gaurav Pandey"] 
      } 
     ] 
} 

나는 에서 언어 CodeIgniter의에 따라 필터 옵션을 적용 할. 컨트롤러의

public function view() 
{ 
    $response = $this->view_model->viewModel($language);  
} 

모델 : -

public function viewModel($language) 
{ 
    $this->db->select(*); 
    $this->db->from('literature'); 
    $this->db->where 
    //What would be structure of where clause? 
} 
+0

CodeIgniter 구문을 찾으려면 원시 SQL 구문을 찾아보십시오. json 유형에는 몇 가지 심각한 제한 사항이 있습니다. 필터링해야하는 데이터가있는 경우 json은 일반적으로 좋은 선택이 아닙니다. –

답변

0

사용 json_extract

WHERE(json_extract(json_each.value, '$.email') LIKE '%criteria%'); 

Reference Link

편집 :

기능이 존재하지 않는다면이 대답이 도움이 될 수 있습니다. answer link

+0

오류 : - json 추출 함수가 존재하지 않습니다. –

0

내 서버 유형을 MySQL 버전 5.7.20으로 변경 한 후 일부 쿼리 형식을 시도했습니다. 나는이 쿼리 주었을 때 지금, 나는 또 다른 문제를 가지고있다 -

$this->db->where('json_extract(item_details,"$.book[0].language")', $language); 

경우 $ 언어 = 영어는

"language":"English", 
      "author":["Y.Nikhilendra","Paresh Khairnar","Madhabendra Rout"] 

return-하지만 모든 데이터가 언어 = 영어 가지고 싶어.