模型文件codeigniter中的多个查询

时间:2016-11-29 14:11:10

标签: php mysql codeigniter

我有一个基于PHP框架的站点CodeIgniter。我在从页面上的数据库表travels_detail获取数据时遇到问题。

控制器方法:

function search_travel(){
    $departure= $this->input->post('departure');
    $destination= $this->input->post('destination'); 
    $data['var']= $this->Travel->search_travel($departure, $destination);
    $this->load->view('flight-list',$data);
}

模型方法:

function search_travel($departure, $destination){
    $this->db->select()->from('travels_detail')->where('departure', $departure)->where('destination', $destination);
    $query= $this->db->get();
    return $query->result_array();      
} 

问题是,我想执行另一个查询,并希望从同一页面中的另一个表中获取一些数据。

例如,我从travels_detail的{​​{1}}表中获取数据,我希望从airline: arik表中获取arik航空公司的图像。

查询应为:

airlines

我如何在CodeIgniter中执行此操作?

2 个答案:

答案 0 :(得分:0)

逻辑是一样的。

控制器:

function search_travel() {
    $departure   = $this->input->post('departure');
    $destination = $this->input->post('destination'); 
    $data['var'] = $this->Travel->search_travel($departure, $destination);

    // You just add an additional call to your model, for the new query
    $airline = $this->input->post('airline'); 
    $data['whatever'] = $this->Travel->travels_detail($airline);

    $this->load->view('flight-list', $data);
}

型号:

function travels_detail($airline) {
    return $this->db
        ->select('image')
        ->from('airlines')
        ->where('airline', $airline)
        ->get()
        ->result_array();
}

一些注意事项:

  • 为单独的表使用单独的模型类
  • 为变量使用语义命名。 var没有帮助。

答案 1 :(得分:0)

我认为您只需加入两张表即可获取航空公司及其形象的信息。

codeigniter中的代码可能是这样的:

function search_travel($departure, $destination){
    return $this->db
                ->select('travels_detail.airline, airlines.image')
                ->from('travels_detail')
                ->join('airlines', 'airlines.airline = travels_detail.airline')
                ->where('travels_detail.departure', $departure)
                ->where('travels_detail.destination', $destination)
                ->get()
                ->result_array();    
}

希望这能解决您的问题。