嗨,我是新的codenighter框架工作soome可以帮助我,我怎么能将此连接查询转换为codenighter框架工作,并告诉我,我必须保持连接查询我的意思是在模型或控制器..? 以及如何获取此查询的结果..? 我想传递class_id作为参数..?
我的查询在这里..
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 :(得分:1)
您需要在模型中保留此SQL查询,然后将结果传递给控制器。您可以将结果集从模型传递给控制器,并可以从那里使用它。如果您想将其传递给视图,则需要将其数据变量传递给视图变量。
它应该是这样的,
在模型文件中:
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();
}
}
在CONTROLLER中,您可以像这样调用此模型函数:
$data['Data'] = $this->student_model->load_countries();
$this->load->view('student_data',$data);
这是根据CodeIgniter活动记录框架。希望这会对你有所帮助。
答案 1 :(得分:0)
您可以使用查询方法编写自己的查询。 在查询方法中,您可以轻松使用连接 例如
你的模特
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;
}
}
}
答案 2 :(得分:0)
$ this-> db-> join()是帮助功能来执行连接查询
允许您编写查询的JOIN部分:
$this->db->select('*');
$this->db->from('blogs');
$this->db->join('comments', 'comments.id = blogs.id');
$query = $this->db->get();
//制作:
// SELECT * FROM blogs JOIN comments ON comments.id = blogs.id
如果在一个查询中需要多个连接,则可以进行多个函数调用。
如果需要特定类型的JOIN,可以通过函数的第三个参数指定它。选项包括:左,右,外,内,左外和右外。
$this->db->join('comments', 'comments.id = blogs.id', 'left');
// Produces: LEFT JOIN comments ON comments.id = blogs.id
您也可以直接在query()函数中编写查询。
$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"');
答案 3 :(得分:0)
参见: - https://www.codeigniter.com/userguide3/database/query_builder.html
你也可以使用以下风格: - 在模型文件中:
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
}
}
在CONTROLLER中,您可以像这样调用此模型函数:
$data['Data'] = $this->student_model->load_countries();
$this->load->view('student_data',$data);
在视图中,您可以使用$ data变量
来获取此信息