在codeigniter中的模型中运行多个查询

时间:2014-02-19 02:09:37

标签: php codeigniter-2

我在codeigniter的模型中有这段代码:

<?php
Class Mymodel Extends CI_Model
{
    function __construct()
    {
        parent::__construct();
    }

    function search($textinput)
    {
        $street = "select street from dataSearch;";
        $stripNameWOSpace = "select stripNameWOSpace FROM dataSearch;";
        $vowels = array('a','e','i','o','u',';','/','-', ' ');
        $string = strtolower($textinput);
        $strippedVowels = mysql_real_escape_string(str_replace($vowels, '', $string));
            $this->db->query("select dataSearch.id,
                dataSearch.name,
                dataSearch.street,
                dataSearch.city,
                dataSearch.lat,
                dataSearch.lng,
                category.asiatype from dataSearch join category on dataSearch.cat = category.id
                where dataSearch.street like '%".$textinput."%'");
            $this->db->query("select dataSearch.id,
                dataSearch.name,
                dataSearch.street,
                dataSearch.city,
                dataSearch.lat,
                dataSearch.lng,
                category.asiatype from dataSearch join category on dataSearch.cat = category.id
                where dataSearch.stripNameWOSpace like '%".$strippedVowels."%'");
            $query = $this->db->get();
            $query->result();

    }
}
?> 

我只想执行多个查询。你注意到两者在哪里有不同的条件。我只是想得到两个查询的结果。 我尝试使用switch语句执行两个查询,但它无法正常工作。帮助我。

2 个答案:

答案 0 :(得分:5)

您可以将查询设置为变量,以便对每个查询执行操作。

像这样:

Class Mymodel Extends CI_Model
{
    function __construct()
    {
        parent::__construct();
    }

    function search($textinput) {
        $query1 = $this->db->query("YOUR QUERY");
        $query2 = $this->db->query("YOUR SECOND QUERY");

        $result1 = $query1->result();
        $result2 = $query2->result();

        return array_merge($result1, $result2); // If you want to merge both results
    }
}

在您的控制器中:

$this->load->model('Mymodel');
$searchresult = $this->Mymodel->search($textinput);

有关详细信息,请阅读CodeIgniter User Guide - Model

答案 1 :(得分:1)

我知道......老了,当我看到可以做得更好的事情时,正在寻找别的东西。除了where语句之外,两个select语句是相同的。您可以使用“OR”来组合两个WHERE语句。使用“DISTINCT”来避免重复输入。如果你真的想要重复的条目,应该使用“UNION”。