CodeIgniter - 从另一个查询的结果中选择数据库

时间:2012-05-23 17:20:28

标签: php codeigniter

请原谅我,如果之前被问过,但我找不到相关的搜索关键字。我会尝试解释我的问题。

我有名为“ilan”和“places”的数据库表。在“ilan”表中,有3列保存地点的ID - 城市,地区,街道。

我想学习如何在视图中打印ilan.name和相关的places.name。

我有一个控制器,如:

class Estate_control extends CI_Controller{

public function _construct(){
    parent::_construct();   
}

function index(){

    $this->load->helper('url');
    $this->load->model("estate_model");

    $data['tum_bayiler'] = $this->estate_model->tum_bayileri_listele();
    $data['sonEmlaklar'] = $this->estate_model->sonEmlaklar();      

    $this->load->view("index",$data);

}
}

我的模型如下:

class Estate_model extends CI_Model{

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

function sonEmlaklar(){
    $query = $this->db
            ->select()
    ->from("ilan")
    ->order_by("gunceltarih DESC")
    ->limit(36)
    ->get();

    return $query->result();            
}

}

我的数据库表:

伊兰:

ilan_id,gunceltarih,...,ilan_city(位置表中的ID),ilan_district(位置表中的ID),ilan_street(位置表中的ID),...

地方:

places_id,places_name,...

有关如何在视图中打印ilan.name和相关places.name 的任何想法。

谢谢大家。

2 个答案:

答案 0 :(得分:0)

我认为这是代码的相关部分

$query = $this->db
        ->select("ilan.*, places.name")
->from("ilan")
->join('places', 'places.id = ilan.ilan_city OR places.id = ilan.ilan_district OR places.id =ilan.ilan_street')
->order_by("gunceltarih DESC")
->limit(36)
->get();

答案 1 :(得分:0)

我找到了出路。我不知道它有多高效,但它对我有用。

我在控制器中的index函数中创建了一个函数,如下所示:

function index(){

    //whatever here

function getPlace($e){
    $ci = get_instance(); //to get properties of parent class
    $query = $ci->estate_model->ilanSehir($e);


    return $query;
}   

    //whatever here

}

然后我在我的模型中放入一个函数,如下所示:

function ilanSehir($e){ 
$query = $this->db->select("*")
    ->from("places")
    ->where("places_id",$e)
    ->get();
 return $query->row();    //This will return one row so it must be row() instead of result()    

}

在我看来,我用我想要的参数调用了函数:

<?php $place = getPlace($ilan->ilan_city);
      echo $place->places_name;
?>

正如我之前所说,我不知道效率如何,但它对我有用。希望能帮助到你。如果我在某处错了,请警告我。

谢谢所有回答

的人