Tive um problema parecido,
Criei uma coluna num_vendas na tabela produtos
e a cada venda incrementava o valor desta coluna.
Assim conseguia utilizar o framework para a paginação de forma bem
simples.

Flw.


On 1 fev, 08:37, "Joao Jose Pedrini" <[EMAIL PROTECTED]> wrote:
> Opa Thiago,
>
> Para quem conhece a funcionalidade VIEW de SQL a solução é muito simples.
> Para quem não conhece, o conceito também á simples: São tabelas virtuais ou
> temporárias que os dados são adquiridos de outras tabelas. As funções
> principais de uma VIEW são segurança e otimização. Podemos utilizar para
> segurança quando temos um banco de dados para sistemas paralelos e queremos
> determinar quais são os campos das tabelas que um determinado usuário pode
> acessar. Já otimização é no caso de querermos armazenar o resultado de uma
> grande consulta ou uma stored procedure em uma tabela no banco... fazendo
> com que o acesso ao resultado seja muito mais simples. Lembrando que o banco
> de dados realiza as verificações de INSERÇÃO e ATUALIZAÇÃO de forma
> transparente. Realmente é algo muito bom de se usar.
>
> Bem, não sei se expliquei bem mas é mais ou menos isso que VIEW é, espero
> contribuições de outros usuários caso tenha errado ou esquecido de alguma
> coisa.
>
> Voltando na explicação do meu problema, o sistema é uma variação de um
> e-commerce, possui navegação por categoria, descrição do produto e listagem
> de produtos entre outros. No listagem de produtos há um requisito de
> ordenação por quantidade de vendas. As informações sobre o número de Vendas
> está armazenado numa tabela separada, uma relação $hasMany de Produto ->
> Venda. Na verdade, a tabela vendas armazena as transações realizadas, porem
> com um simples COUNT() é possível saber quantas vendas foram realizadas.
> Estou utilizando o Paginate do Cake 1.2 e quando fui desenvolver esse
> requisito, fiquei na dúvida de como utilizar.
>
> Em SQL isso é muito fácil: SELECT Produto.id, COUNT(Venda.*) AS num_vendas
> FROM Produto LEFT JOIN Venda ON Produto.id = Venda.produto_id GROUP BY
> Produto.id ORDER BY num_vendas DESC
>
> Agora, como fazer isso no Cake que eu simplesmente não descobri. Tentei de
> várias maneiras e pesquisei bastante. Só que não consegui uma solução
> através do Cake. A solução foi muito mais simples que eu imaginava,
> armazenei esta mesma SQL em uma VIEW e criei uma relação $hasOne do produto
> com a tabela VIEW. Depois disso fica simples.
>
> Um comentário:
> Nunca trabalhei com uma plataforma de desenvolvimento completa como o Cake,
> e geralmente, quando quero resolver um problema, penso na solução mais baixo
> nível possível. Quando comecei a utilizar o Cake, venho me policiando para
> sempre utilizar as funcionalidades do framework para não querer reinventar a
> roda. Só que este policiamento tem seus lados ruins, nem sempre o framework
> nos dará todas as soluções prontas, e nem é o objetivo dele, neste caso
> fiquei horas, gastando tempo de dois funcionários para procurar uma solução
> pronta que aparentemente não existe. E até pode existir, mas como ainda
> penso em soluções baixo níveis, não consegui achar.
>
> Mas fica a dica de que nem sempre temos que utilizar somente o que o
> framework nos fornece. E para quem tiver algum sistema com comportamento
> parecido, fica ai a solução.
>
> Abraços
>
> 2008/1/30 Thiago Paes <[EMAIL PROTECTED]>:
>
>
>
> > Parece ter sido uma ótima solução João, você poderia compartilhar com a
> > galera com mais detalhes?
>
> > Abs,
> > Thiago
>
> > --
>
> > 2008/1/30 Joao Jose Pedrini <[EMAIL PROTECTED]>:
>
> > Olá galera,
>
> > > Hoje passei um aperto danado para resolver um problema de ordenação com
> > > o CakePHP 1.2. Eu tenho um campo $hasMany que necessita ter um
> > > agrupamento para obter o resultado. O sistema necessita de uma ordenação 
> > > de
> > > acordo com o numero de vendas, no SQL faria normalmente com COUNT() e 
> > > GROUP
> > > BY, mas tive dificuldade. Depois de MUITAS horas, obtive somente uma
> > > solução. (as vezes nós não pensamos direito pois ficamos com a ilusão de 
> > > que
> > > framework vai fazer tudo pra nós).
>
> > > Resolvi através de VIEW em SQL (Mysql 5.0), depois criei uma associação
> > > $hasOne no model do Produto, e pronto... solução feita.
>
> > > Estou contando minha experiência pois não desejo essa perda de tempo
> > > para ninguém... acredito que outros sistemas possam utilizar essa solução,
> > > como sistemas de Votos, Rankings, etc.
>
> > > Aquele abraço!
>
> > > --
> > > Joao Jose Pedrini
> > > [EMAIL PROTECTED]
> > > Consultor - COP-JR
> > >http://blog.copjr.info/
>
> > --
> > ________________________________________________________
> > Thiago Paes -www.thiagopaes.com.br- Linuxer: #224062
>
> --
> Joao Jose Pedrini
> [EMAIL PROTECTED]
> Consultor - COP-JRhttp://blog.copjr.info/
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito no Grupo "Cake PHP Português" 
em Grupos do Google.
 Para postar neste grupo, envie um e-mail para [email protected]
 Para cancelar a sua inscrição neste grupo, envie um e-mail para [EMAIL 
PROTECTED]
 Para ver mais opções, visite este grupo em 
http://groups.google.com/group/cake-php-pt?hl=pt-BR
-~----------~----~----~----~------~----~------~--~---

Responder a