No seu model usuarios pode ter uma atributo listaamigos, por exemplo. Ai vc
faria uma busca por usuarios, percorreria o resultset e dentro do laço do
resultset adicionaria os amigos na lista

ex:

<?php

class UsuarioModel extends Model {

    var $id;
    var $nome;
    var $email;
    var $lista_amigos;

    function UsuarioModel() {
        parent::Model();
    }

    function getAll(){
        $lista_usuarios = array();
        $usuarios = $this->db->get('usuarios');
        foreach($usuarios->result() as $user) {
            // faz a consulta pra pegar os amigos
            //$this->db->join('blablabla', 'blablabal');
            $user->lista_amigos = // $this->db->get('tabela_amigos'); //
coloca o resultado dos amigos aqui
            array_push($lista_usuarios, $user); // popula a lista de
usuarios
        }
        return $lista_usuarios;
    }

}

?>

Pergunto aos mais experientes se isso é gambiarra? se tem como fazer mais
bonito/melhor?

2009/2/3 Eric Saboia (Fortes Informatica) <[email protected]>

>  Sub Select mais rápido e correto?
> Da onde você tirou isso?
>
> ----- Original Message -----
> *From:* Beto <[email protected]>
> *To:* CodeIgniter Brasil <[email protected]>
> *Sent:* Tuesday, February 03, 2009 1:19 PM
> *Subject:* Re: [CodeIgniter] dúvida sobre práticas
>
> Nao teria como vcfazer toda consulta via banco, com sub-select ? como todos
> falaram deve ser mais rapido e correto ;)
>
> []´s
>
> - - - - - - - - - - - - - - - - - - - - -
> Luiz Alberto S. Ribeiro [ Beto ]
> http://beto.euqueroserummacaco.com
>
>
> 2009/2/3 Bruno Barros <[email protected]>
>
>> O controller está puxando o View principal e chamando o Model para
>> gerar a listagem de usuários.
>>
>> Vamos supor que cada usuário (cada registro lido) eu tivesse que gerar
>> uma outra lista de usuários que são amigos dele.
>> Então eu teria que fazer uma nova pesquisa para gerar outra sub-listagem.
>>
>> Minha dúvida é como eu mando esta informação para o View. Se monto
>> toda a tabela fora, ou se insiro uma linha que faz a segunda pesquisa
>> e continua a fazer o segundo foreach.
>>
>> Ex:
>>        <?php
>>    foreach($listaItens as $row):
>>
>>                $nome = $row['nome'];
>>
>>                // faz a segunda pesquisa. esta listagem tem uma
>> formatação específica
>>                $lista_amigos= $this->meu_model->gera_lista($row['id']);
>>
>>    ?>
>>    <tr>
>>    <td><?=$nome?></td>
>>    <td><?=$lista_amigos?></td>
>>    <td>&nbsp;</td>
>>    <td>&nbsp;</td>
>>    <td>&nbsp;</td>
>>    </tr>
>>    <?php
>>    endforeach;
>>    ?>
>>
>>
>> 2009/2/3 Vinicius Cruz <[email protected]>:
>>  > Isso tá me cheirando pog.. =D
>> >
>> > A primeira opção limou a função do controller. Me parece que um JOIN já
>> > retornaria o status do usuário, não?
>> >
>> > Vinicius
>> >
>> > 2009/2/3 Bruno Barros <[email protected]>
>> >>
>> >> Pessoal,
>> >> tenho uma dúvida sobre práticas.
>> >>
>> >> Tenho que gerar uma tabela no View, e cada linha desta tabela precisa
>> >> de informações específicas, como o status deste usuários etc.
>> >> Então cada linha retornada do BD gera outra pesquisa.
>> >>
>> >> É melhor eu colocar dentro da View:
>> >> <?php
>> >>    foreach($listaItens as $row):
>> >>
>> >>                $status=
>> $this->meu_model->status_do_usuario($row['id']);
>> >> // faz
>> >> outra requisição no BD
>> >>    ?>
>> >>    <tr>
>> >>    <td><?=$nome?></td>
>> >>    <td><?=$status?></td>
>> >>    </tr>
>> >>    <?php
>> >>    endforeach;
>> >>    ?>
>> >>
>> >> ... ou ...
>> >>
>> >> Gerar toda a tabela dentro do Model e depois descarregar tudo na View?
>> >>
>> >>
>> >> --
>> >> []'s
>> >> Bruno Barros
>> >> [email protected]
>> >>
>> >> _______________________________________________
>> >> Lista mailing list
>> >> [email protected]
>> >> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>> >
>> >
>> > _______________________________________________
>> > Lista mailing list
>> > [email protected]
>> > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>> >
>> >
>>
>>
>>
>> --
>>  []'s
>> Bruno Barros
>> [email protected]
>>
>> _______________________________________________
>> Lista mailing list
>> [email protected]
>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>
>
>  ------------------------------
>
> _______________________________________________
> Lista mailing list
> [email protected]
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
>
> _______________________________________________
> Lista mailing list
> [email protected]
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
>


-- 
Reginaldo Sousa | Desenvolvedor web
[email protected], [email protected]
(21) 8728-1850
_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

Responder a