2017-12-25 1 views
0

Filter auf JSON-Format-Datenbank anzuwenden habe ich eine Datenbank mit einer Tabelle mit dem Namen ‚Literatur‘ in dieser Tabelle gibt es nur eine Spalte „item_details“, wie unten angegebene Daten im JSON-Format zu haben: -Wie in 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"] 
      } 
     ] 
} 

ich möchte Filteroption anwenden nach Sprachen in CodeIgniter. in der Steuerung

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

Modell: -

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

Bevor Sie versuchen, die CodeIgniter-Syntax zu finden, versuchen Sie, die rohe SQL-Syntax zu finden. Der JSON-Typ hat einige ernsthafte Einschränkungen. Wenn Sie Daten haben, nach denen Sie filtern müssen, ist json normalerweise keine gute Wahl. –

Antwort

0

Verwenden json_extract

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

Reference Link

Edit:

Wenn Sie sehen, dass die Funktion nicht existiert, kann Ihnen diese Antwort helfen. answer link

+0

Fehler: - Funktion Json-Extrakt existiert nicht –

0

Nachdem ich meinen Server-Typ auf MySQL Version 5.7.20, geändert habe, habe ich einige Abfragen versucht. Jetzt habe ich ein anderes Problem, wenn ich diese Abfrage gab: -

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

wenn $ language = Englisch diese rendite

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

aber ich möchte alle Daten erhalten, die language = Englisch.