has many through

12 views
Skip to first unread message

DS interativa | PHP Grupos

unread,
Jan 4, 2014, 12:12:38 PM1/4/14
to kohan...@googlegroups.com
Pessoal

tenho 4 tabelas:
clientes
pedidos
produtos
pedidos_produtos

cada cliente tem pedidos
cada pedido tem produtos

obtenho 1 cliente
$oCliente->pedidos (obetnho os pedidos relacionados)

itero os pedidos
e para cada pedido pesquisa os produtos relacionados
$oCliente->pedidos->produtos->find_all()

diretamente da tabela clientes, obtenho o cliente, seus pedidos e para
cada pedido os produtos
so que tem um detalhe, as chaves estrangeiras s�o campos "GID"

em cada model eu seto a primary key diferenciada!!
tudo ocorre corretamente, obtenho os dados certinho, mas na itera��o de
produtos/pedido
ao executar o find_all iterando por registro, a query da erro e no erro,
a jun��o produto por produto_id, pedido_id !! (sendo que cada model tem
sua primary key setada conforme a tabela, o campo GID)

e agora, como proceder ?? alguem passou por isso ja ?
estou usando o ko3.3

felipe bastos

unread,
Jan 4, 2014, 7:18:59 PM1/4/14
to Kohana Php
Cara,

Seria melhor não usar many to many pois pedidos_produtos (que gosto de chamar de pedido_items) tem atributos, e deve se tornar uma entidade (DER).

tabela items
id
pedido_id
produto_id
qtde
taxas
descontos
etc....

Compare com ecommerces do mercado.

Renan Vaz

unread,
Jan 4, 2014, 10:23:06 PM1/4/14
to kohan...@googlegroups.com
Cara, vc poderia colar a descrição correta do erro?

Outra questão, o modo em que vc esta iterando funciona? Não consigo testar no momento, mas no KO3 vc não deveria iterar primeiro nos pedidos e depois nos produtos?

Abs,
Renan Vaz 

Em sábado, 4 de janeiro de 2014, DS interativa | PHP Grupos escreveu:
Pessoal

tenho 4 tabelas:
clientes
pedidos
produtos
pedidos_produtos

cada cliente tem pedidos
cada pedido tem produtos

obtenho 1 cliente
$oCliente->pedidos (obetnho os pedidos relacionados)

itero os pedidos
e para cada pedido pesquisa os produtos relacionados
$oCliente->pedidos->produtos->find_all()

diretamente da tabela clientes, obtenho o cliente, seus pedidos e para cada pedido os produtos
so que tem um detalhe, as chaves estrangeiras são campos "GID"


em cada model eu seto a primary key diferenciada!!
tudo ocorre corretamente, obtenho os dados certinho, mas na iteração de produtos/pedido
ao executar o find_all iterando por registro, a query da erro e no erro, a junção produto por produto_id, pedido_id !! (sendo que cada model tem sua primary key setada conforme a tabela, o campo GID)


e agora, como proceder ?? alguem passou por isso ja ?
estou usando o ko3.3

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana Php" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para kohana-php+...@googlegroups.com.
Para postar neste grupo, envie um e-mail para kohan...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/kohana-php.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.


--
Abs,
Renan Vaz
Cel: (11) 97148.6994
Skype: vazrenan
Twitter: @renanvaz
Facebook: http://www.facebook.com/renanvaz

felipe bastos

unread,
Jan 4, 2014, 10:54:13 PM1/4/14
to Kohana Php
Uma sugestão: Divida a consulta de acordo com as seções da página

1 - Você vai listar os pedidos do usuário logado $cliente->pedidos->find_all();
2 - Você vai abrir um dos pedidos $pedido->produtos->find_all(); //segundo sua modelagem $cliente = $pedido->cliente;

Pelo que estou imaginando, você não poderá fazer isso $oCliente->pedidos->produtos->find_all() diretamente via ORM pois os relacionamentos são diferentes .. Has_Many e Many to Many (Throug) .. você precisa de um for, ou gerar a SQL via Active Record .. veja se quebrando a consulta com foreach funciona

DS interativa | PHP Grupos

unread,
Jan 5, 2014, 12:28:23 PM1/5/14
to kohan...@googlegroups.com
Faltou usar o far_key na especificação do relacionamento das tabelas, consegui resolver agora pouco !! (não tinha achado na documentação)

o formato que estou usando é de acordo com as necessidades do cliente, logo, foge ao modelo que existe hoje no mercado para eu me basear !!
sabendo que tenho me baseado em lojas como extra.com.br para algumas/outras situações.

detalhes a parte,
consegui resolver, agradeço a ajuda de todos !!

Att,
Giovanni
Reply all
Reply to author
Forward
0 new messages