如何使用codeigniter在多个表中搜索?

时间:2013-04-02 11:11:49

标签: mysql codeigniter search multiple-tables

所以我有一个搜索框可以在我的工厂表中搜索。它的工作方式就像一个魅力,但我仍然是codeigniter的新手。

我是否需要使用select来选择数据库中的多个表?

我的控制器功能:

    function search()
    {
        $this->load->view('views/header');
        $this->load->view('views/search');
        $this->load->view('views/footer');
    }

    function searchresults()
    {
        $match = $this->input->post('search');
        $data['query'] = $this->bedrijven_model->get_search($match);
        $this->load->view('views/header');
        $this->load->view('views/searchresults', $data);
        $this->load->view('views/footer');
    }

我的模特:

function get_search($match)
{
    $this->db->like('Bedrijfsnaam', $match);
    $this->db->or_like('Postcode', $match);
    $this->db->or_like('Plaats', $match);
    $this->db->or_like('Telefoonnummer', $match);
    $this->db->or_like('Email', $match);
    $this->db->or_like('Website', $match);
    $this->db->or_like('Profiel', $match);
    $this->db->or_like('Adres', $match);
    $query = $this->db->get('bedrijven');

    return $query->result();
}

我也想知道你是否可以将你的搜索功能从模型中放入控制器。因为那时我需要为每个表创建一个新的模型函数。

提前致谢。

2 个答案:

答案 0 :(得分:3)

尝试连接两个表然后应用

$this->db->like('Bedrijfsnaam', $match);
$this->db->or_like('Postcode', $match);
$this->db->or_like('Plaats', $match);
$this->db->or_like('Telefoonnummer', $match);
$this->db->or_like('Email', $match);
$this->db->or_like('Website', $match);
$this->db->or_like('Profiel', $match);
$this->db->or_like('Adres', $match);

在col1,col2

中搜索table2中的匹配项
$this->db->or_like('table2.col1',$match);
$this->db->or_like('table2.col2',$match);

最后使用table1

加入您已应用上述内容的表格
$this->db->join('table2','table1.id = table2.id');
$query = $this->db->get('bedrijven');

答案 1 :(得分:0)

“用户指南”中的示例应解释此:

$this->db->select('*'); // <-- There is never any reason to write this line!
$this->db->from('blogs');
$this->db->join('comments', 'comments.id = blogs.id');

$query = $this->db->get();

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

请参阅“用户指南”中Active Record页面下的整个内容。