2016-06-14 3 views
0

Hallo ich bin neu in Coderighter Frame Arbeit soome kann mir helfen, dass, wie kann ich diese Join-Abfrage zu Coderighter Frame Arbeit konvertieren und sagte mir auch, dass, wo ich die Join-Abfrage beibehalten habe ich meine im Modell oder Controller ..? und wie kann ich das Ergebnis dieser Abfrage holen ..? Ich möchte die class_id als Parameter übergeben ..?Wie man Join-Abfrage in Codenighter

meine Frage hier ist ..

SELECT e.roll,s.name,p.title,i.amount,i.amount_paid,i.status,i.creation_timestamp 
FROM `payment` p 
INNER JOIN student s ON s.student_id=p.student_id 
INNER JOIN enroll e  ON e.student_id=p.student_id 
INNER JOIN invoice i ON i.student_id=p.student_id AND e.class_id=6 AND e.year="2016-2017" 
+0

Sie sollten die [Dokumentation] wirklich bekommen können lesen (http://www.codeigniter.com/user_guide/overview/getting_started.html). – Jurik

Antwort

1

Sie benötigen diese SQL-Abfrage in Ihrem Modell zu halten, und dann das Ergebnis übergeben an die Steuerung. Sie können die Ergebnismenge vom Modell an den Controller übergeben und von dort aus verwenden. Wenn Sie es zur Ansicht übergeben möchten, müssen Sie seine Datenvariable in die Ansichtsvariable übergeben.

es so sein sollte,

In MODEL Datei:

function get_data(){ 
     $this->db->select('enroll.roll,student.name,payment.title,invoice.amount,invoice.amount_paid,invoice.status,invoice.creation_timestamp');  
     $this->db->from('payment'); 
     $this->db->join('student', 'student.student_id = payment.student_id', 'inner'); 
     $this->db->join('enroll', 'enroll.student_id = payment.student_id', 'inner'); 
     $this->db->join('invoice', 'invoice.student_id = payment.student_id', 'inner'); 
     $this->db->where(array('enroll.class_id'=>6,'enroll.year'=>'2016-2017')); 
     $query = $this->db->get(); 
     if($query->num_rows()>0){ 
      return $query->result_array(); 
     } 
    } 

In CONTROLLER Sie dieses Modell Funktion wie folgt aufrufen können:

$data['Data'] = $this->student_model->load_countries(); 
    $this->load->view('student_data',$data); 

Dies ist laut CodeIgniter aktiven Datensatz Rahmen. Hoffe das wird dir helfen.

0

Sie können Abfrage-Methode verwenden, um Ihre eigene Abfrage zu schreiben. in Abfragemethode Sie schließt sich leicht zum Beispiel Abfrage beitreten

Ihr Modell

class Model_name extends CI_Model { 

        function __construct() 
        { 
         parent::__construct(); 
        } 

        public function get_record(){ 
         $data = $this->db->query(' 
            SELECT e.roll,s.name,p.title,i.amount,i.amount_paid,i.status,i.creation_timestamp 
FROM `payment` p 
INNER JOIN student s ON s.student_id=p.student_id 
INNER JOIN enroll e  ON e.student_id=p.student_id 
INNER JOIN invoice i ON i.student_id=p.student_id AND e.class_id=6 AND e.year="2016-2017" 
            '); 
         if($data->num_rows()>0){ 
          return $data; 
         } 
        } 
       } 
0

$ this-> db-> join() ist Helfer funtion ausführen können

Ermöglicht Ihnen, den JOIN-Teil Ihrer Abfrage zu schreiben:

$this->db->select('*'); 
$this->db->from('blogs'); 
$this->db->join('comments', 'comments.id = blogs.id'); 
$query = $this->db->get(); 

// Erzeugt:

// SELECT * FROM blogs JOIN comments ON comments.id = blogs.id 

Mehrfunktions-Anrufe getätigt werden können, wenn Sie in einer Abfrage mehrere Verknüpfungen müssen.

Wenn Sie einen bestimmten Typ von JOIN benötigen, können Sie ihn über den dritten Parameter der Funktion angeben. Optionen sind: links, rechts, außen, innen, links außen und rechts außen.

$this->db->join('comments', 'comments.id = blogs.id', 'left'); 
// Produces: LEFT JOIN comments ON comments.id = blogs.id 

Sie können auch query in der Funktion query() schreiben.

$query = $this->db->query('SELECT e.roll,s.name,p.title,i.amount,i.amount_paid,i.status,i.creation_timestamp 
FROM `payment` p 
INNER JOIN student s ON s.student_id=p.student_id 
INNER JOIN enroll e  ON e.student_id=p.student_id 
INNER JOIN invoice i ON i.student_id=p.student_id AND e.class_id=6 AND e.year="2016-2017"'); 

Referenzen: CodeIgniter Docmentation

0

Siehe: - https://www.codeigniter.com/userguide3/database/query_builder.html

Sie auch unter Art verwenden können: - In MODEL Datei: Sie

function get_data(){ 
$this->db->where(array('enroll.class_id'=>6,'enroll.year'=>'2016-2017')); 
$this->db- >select('enroll.roll,student.name,payment.title,invoice.amount,invoice.amount_paid,invoice.status,invoice.creation_timestamp');  
$query = $this->db->from('payment')->join('student', 'student.student_id = payment.student_id', 'inner')->join('enroll', 'enroll.student_id = payment.student_id', 'inner')->join('invoice', 'invoice.student_id = payment.student_id', 'inner')->get(); 

if($query->num_rows()>0){ 
    return $query->result_array(); //You can also use result(); provide object array 
} 

}

In CONTROLLER kann dieses Modell func nennen tion wie folgt aus:

$data['Data'] = $this->student_model->load_countries(); 
$this->load->view('student_data',$data); 

Im Hinblick Sie diese Daten mit $ variable