Возврат двух отдельных результатов запроса в модельной функции - PullRequest
0 голосов
/ 03 апреля 2011

В моей модели есть функция, которая должна запускать 2 разных запроса.

В идеале я хотел бы, чтобы она возвращала 2 разные переменные (по 1 из каждого запроса), которые были бы доступны для моего контроллера.

Код ниже, очевидно, не работает, потому что первый возврат завершает выполнение прямо здесь.Но как я могу сделать что-то, что сгенерирует эти два результата в одной и той же функции?

Спасибо за любую помощь / указатель, который вы можете предоставить.

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;
}

Ответы [ 3 ]

4 голосов
/ 03 апреля 2011
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;
}

см. Также ответ Данипа

3 голосов
/ 03 апреля 2011

Получил что-нибудь против возвращаемого массива ($ data1, $ data2);?

Тогда вы можете использовать list ($ foo, $ bar) = $ baz-> ABC ();в вашем контроллере вы хотите.

2 голосов
/ 03 апреля 2011

Вы можете сделать это, как предложено fazo, но у вашего класса / метода, похоже, есть проблема. Вы бы лучше рефакторинг этого кода и вернуть результаты в двух разных функциях.

...