在模型函数中返回两个单独的查询结果

时间:2011-04-02 21:01:53

标签: php codeigniter return

我的模型有一个应该运行2个不同查询的函数。

理想情况下,我希望它能为我的控制器提供2个不同的变量(每个查询1个变量)。

下面的代码显然不起作用b / c第一个返回结束执行就在那里。但是我怎么能做一些会在同一个函数中产生这两个结果的东西呢?

感谢您提供的任何帮助/指针。

MODEL -- Hypothetical code

function ABC() 
{
    $query1 = $this->db->query( ... MySQL code #1 here ... );

    $data1 = array();
    foreach (query1->result() as $row){
        $data1[$row->k] = $row->value;

    return $data1;    

    $query2 = $this->db->query( ... MySQL code #2 here ... );

    $data2 = array();
    foreach (query2->result() as $row){
        $data2[$row->k] = $row->value;

    return $data2;
}

4 个答案:

答案 0 :(得分:4)

function ABC() 
{
    $query1 = $this->db->query( ... MySQL code #1 here ... );

    $data = array();
    foreach (query1->result() as $row){
        $data['query1'][$row->k] = $row->value;


    $query2 = $this->db->query( ... MySQL code #2 here ... );

    $data2 = array();
    foreach (query2->result() as $row){
        $data['query2'][$row->k] = $row->value;

    return $data;
}

另见danip的回答

答案 1 :(得分:3)

得到任何反对返回数组($ data1,$ data2); ?

然后你可以使用list($ foo,$ bar)= $ baz-> ABC();在你想要的控制器中。

答案 2 :(得分:2)

你可以像fazo建议的那样做,但你的类/方法设计似乎有问题。您最好重构此代码并将结果返回到两个不同的函数中。

答案 3 :(得分:0)

使用以下经过测试并能正常工作的代码

function Submit() 
{
    $query1 = $this->db->query( INSERT INTO... MySQL code #1 here ... );

    $query2 = $this->db->query( INSERT INTO... MySQL code #2 here ... );

    return array( $query1, $query2);
}

function Submit() 
{
    $query1 = $this->db->query( INSERT INTO... MySQL code #1 here ... );

    $query2 = $this->db->query( INSERT INTO... MySQL code #2 here ... );

    return $query1;
    return $query2;
}