2011-04-02 35 views
0

我的模型有一個應該運行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; 
} 

回答

2

你可以像fazo建議這樣做,但你的類/方法設計似乎有問題。你會更好地重構這段代碼,並以兩種不同的函數返回結果。

+0

同意 - 我會嘗試馬上 – pepe 2011-04-02 21:12:11

+0

謝謝@danip,這很好,並證明我需要睡一覺:P – pepe 2011-04-02 21:35:14

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的答案

+0

@fazo - 謝謝 - 第5行應該是'$ data1'而不是'$ data'? – pepe 2011-04-02 21:08:20

+0

@torr否 - 你需要在一個數組中得到兩個結果 – fazo 2011-04-02 21:09:18

+0

感謝@fazo,得到它 – pepe 2011-04-02 21:13:32

3

對返回的數組($數據1,$數據2)有什麼東西; ?然後你可以使用list($ foo,$ bar)= $ baz-> ABC();然後你可以使用list($ foo,$ bar)= $ baz->在你想要的控制器中。

相關問題