2017-12-23 1 views
0

Ich habe eine benutzerdefinierte Abfrage in CI, die mehrere Daten aus zwei Tabellen holt ich bin ein Suchmechanismus implementieren, in dem mehrere Parameter mit Get Request geparst werden, die ich anpassen möchte, um Daten abzurufen Die Basis der Suchparameter!Übergabe von Array in Where-Klausel in Join

dies ist meine Abfrage, die funktioniert und es enthält keine Klausel where

return $this->db->query('Select t1.id,t1.course_name,t1.course_duration,t1.course_price,t1.course_category, t2.first_name , t2.last_name , t2.email 
          from teacher_courses as t1 LEFT JOIN teacher as t2 on t1.teacher_id=t2.id  
         ')->result_array(); 

jetzt die Abfrage genau das gleiche bleiben ich möchte nur Daten in die auf der Grundlage der Suchparameter abrufen eingeben where-Klausel

dies ist das Format meiner url

http://localhost/online-learning/Home/courses?courses=1-3&teacher=1 

in meinem Controller ich so etwas wie diese

tue
if(isset($_GET['courses'])){ 
      (isset($_GET['courses'])) ? $get['courses']=explode('-', $_GET['courses']) :""; 
      (isset($_GET['teacher'])) ? $get['teacher']=explode('-', $_GET['teacher']) :""; 
      echo "<pre>"; 
      print_r($get); 

     } 

jetzt die Daten in Form von

abgerufen
Array 
(
    [courses] => Array 
     (
      [0] => 1 
      [1] => 3 
     ) 

    [teacher] => Array 
     (
      [0] => 1 
     ) 

) 

so wie gebe ich dieses Array in der where-Klausel meiner Abfrage beitreten.

Antwort

2
$courses = implode(',', $array['courses']); 
$teacher = implode(',', $array['teacher']); 
return $this->db->query('Select 
t1.id,t1.course_name,t1.course_duration,t1.course_price,t1.course_category, 
t2.first_name , t2.last_name , t2.email 
from teacher_courses as t1 
LEFT JOIN teacher as t2 on t1.teacher_id=t2.id WHERE course_id IN ($courses) AND teacher_id IN ($teacher)')->result_array(); 
+0

perfekt haziq bhai! Mach weiter so :) –

Verwandte Themen