Valeu Paulo e Beto resolvi o problema usei join agora sim ta perfeito
t+ galera Em 24 de maio de 2013 12:04, Fabyo Guimaraes <[email protected]> escreveu: > Obrigado, é que eu nao queria ter que escrever a query toda, estava > tentando aproveitar a praticidade do ORM no esquema que eu falei que > funciona: > > echo $filho->avo->name; > > só que como nao vai ter jeito vou montar a query mesmo > > valeu > > > Em 24 de maio de 2013 12:01, Beto <[email protected]> escreveu: > > acho q vc tem q usar o nome da tabela. Se a tabela é 'avos' ( no plural, >> como espera o comportamento padrao do ORM ) >> >> $filhos = ORM::Factory('filho') >> ->with('avo') >> ->offset(0) >> ->limit(50) >> ->order_by('filho.expiration_date', 'ASC') >> * ->order_by('avos.nome', 'ASC')* >> ->find_all(); >> >> tenta isso p ve se resolve. >> >> []s >> >> >> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >> - - - - >> >> Luiz Alberto S. Ribeiro [ Beto ] >> @madeinnordeste >> <http://www.twitter.com/madeinnordeste><http://beto.euqueroserummacaco.com> >> http://beto.euqueroserummacaco.com >> >> >> >> >> >> Em 24 de maio de 2013 11:53, Paulo Duarte >> <[email protected]>escreveu: >> >> hum, foi mau... pai está ligado com avo e não o filho... >>> cara, eu nunca teste, mais de repente da para usar with com pai e avo, >>> senão tenta com JOIN. >>> >>> Outra solução é executar a query assim: >>> >>> $query = " >>> SELECT >>> f.id >>> FROM >>> filho f, >>> pai p, >>> avo a >>> WHERE >>> f.pai_id = p.id AND >>> p.avo_id = a.id >>> ORDER BY >>> a.nome, >>> f.expiration_date, >>> LIMIT >>> 0, 50"; >>> $resultado = DB::query(Database::SELECT,$query)->execute(); >>> foreach($resultado as $r) { >>> $filho = ORM::Factory('filho',$r['id']); >>> echo $filho->name; >>> echo $filho->pai->name; >>> echo $filho->pai->avo->name; >>> } >>> >>> Você pode para otimizar o tempo já trazer no resultado do select todas >>> as informações que quer mostrar, não precisando carregar o filho a cada >>> interação... aí fica a seu critério. >>> Isso deve resolver. >>> >>> Abs >>> >>> >>> Atenciosamente, >>> >>> >>> *Paulo Duarte* >>> Inteligência Web - Comunicação e Sistemas >>> >>> Fone: (48) 3028.5141 / 8426.3629 >>> E-mail: [email protected] >>> Skype: paulo.iw >>> >>> >>> ------------------------------------------------------------------------------------------- >>> Aviso de confidencialidade: >>> Esta mensagem da Empresa IW - Inteligência Web Comunicação e Sistemas, >>> empresa privada, é enviada exclusivamente a seu destinatário e pode conter >>> informações confidenciais, protegidas por sigilo profissional. Sua >>> utilização desautorizada é ilegal e sujeita o infrator às penas da lei. Se >>> você a recebeu indevidamente, queira, por gentileza, reenviá-la ao >>> emitente, esclarecendo o equívoco. >>> >>> >>> Em 24 de maio de 2013 11:33, Fabyo Guimaraes <[email protected]>escreveu: >>> >>>> Valeu Paulo e Beto >>>> >>>> eu tentei usar o with e o order by mas esta dando esse erro >>>> >>>> ErrorException [ 4 ]: syntax error, unexpected '$filhos' (T_VARIABLE) ~ >>>> APPPATH\classes\Controller\Filhos.php [ 20 ] >>>> >>>> linha 20 : $filhos = ORM::Factory('filho') >>>> >>>> linha 21 : ->with('avo') >>>> >>>> >>>> >>>> Em 24 de maio de 2013 11:19, Paulo Duarte <[email protected] >>>> > escreveu: >>>> >>>>> Cara, o avô está em outra tabela... >>>>> se não me engano você tem q fazer algo assim (se for utilizar ORM): >>>>> $filhos = ORM::Factory('filho') >>>>> ->with('avo') >>>>> ->offset(0) >>>>> ->limit(50) >>>>> ->order_by('filho.expiration_date', 'ASC') >>>>> ->order_by('avo.nome', 'ASC') >>>>> ->find_all(); >>>>> >>>>> Atenciosamente, >>>>> >>>>> >>>>> *Paulo Duarte* >>>>> Inteligência Web - Comunicação e Sistemas >>>>> >>>>> Fone: (48) 3028.5141 / 8426.3629 >>>>> E-mail: [email protected] >>>>> Skype: paulo.iw >>>>> >>>>> >>>>> ------------------------------------------------------------------------------------------- >>>>> Aviso de confidencialidade: >>>>> Esta mensagem da Empresa IW - Inteligência Web Comunicação e Sistemas, >>>>> empresa privada, é enviada exclusivamente a seu destinatário e pode conter >>>>> informações confidenciais, protegidas por sigilo profissional. Sua >>>>> utilização desautorizada é ilegal e sujeita o infrator às penas da lei. Se >>>>> você a recebeu indevidamente, queira, por gentileza, reenviá-la ao >>>>> emitente, esclarecendo o equívoco. >>>>> >>>>> >>>>> Em 24 de maio de 2013 10:32, Fabyo <[email protected]> escreveu: >>>>> >>>>>> Oi Pessoal >>>>>> >>>>>> eu estava usando o recurso do kohana sobre relacionamento de tabelas >>>>>> e estava perfeito, ate que eu precisei ordenar um campo da tabela e deu >>>>>> erro >>>>>> estou testando e acho que para ordenar do jeito que eu quero nao vou >>>>>> poder usar o modo padrado do kohana >>>>>> vou postar um exemplo para voces entenderem melhor >>>>>> >>>>>> $filhos = ORM::Factory('filho') >>>>>> ->offset(0) >>>>>> ->limit(50) >>>>>> ->order_by('expiration_date', 'ASC') >>>>>> ->find_all(); >>>>>> >>>>>> foreach ($filhos as $filho) >>>>>> { >>>>>> echo $filho->name; >>>>>> echo $filho->pai->name; >>>>>> echo $filho->pai->avo->name; >>>>>> } >>>>>> >>>>>> esse exemplo funciona perfeitamente só que precisei ordenar o nome do >>>>>> avo ai que eu percebi um problema >>>>>> do jeito que eu estou fazendo acima nao tem como certo? >>>>>> >>>>>> vou ter que fazer de outra maneira? se for isso blz eu consigo fazer, >>>>>> mas só queria uma opniao pra saber se tem como fazer continuando usando o >>>>>> exemplo acima >>>>>> >>>>>> valeu >>>>>> >>>>>> -- >>>>>> 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 [email protected] >>>>>> . >>>>>> Para postar neste grupo, envie um e-mail para >>>>>> [email protected]. >>>>>> Visite este grupo em >>>>>> http://groups.google.com/group/kohana-php?hl=pt-BR. >>>>>> Para obter mais opções, acesse >>>>>> https://groups.google.com/groups/opt_out. >>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>>> 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 [email protected]. >>>>> Para postar neste grupo, envie um e-mail para >>>>> [email protected]. >>>>> Visite este grupo em >>>>> http://groups.google.com/group/kohana-php?hl=pt-BR. >>>>> Para obter mais opções, acesse >>>>> https://groups.google.com/groups/opt_out. >>>>> >>>>> >>>>> >>>> >>>> -- >>>> 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 [email protected]. >>>> Para postar neste grupo, envie um e-mail para >>>> [email protected]. >>>> Visite este grupo em http://groups.google.com/group/kohana-php?hl=pt-BR >>>> . >>>> Para obter mais opções, acesse https://groups.google.com/groups/opt_out >>>> . >>>> >>>> >>>> >>> >>> -- >>> 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 [email protected]. >>> Para postar neste grupo, envie um e-mail para >>> [email protected]. >>> Visite este grupo em http://groups.google.com/group/kohana-php?hl=pt-BR. >>> Para obter mais opções, acesse https://groups.google.com/groups/opt_out. >>> >>> >>> >> >> -- >> 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 [email protected]. >> Para postar neste grupo, envie um e-mail para [email protected] >> . >> Visite este grupo em http://groups.google.com/group/kohana-php?hl=pt-BR. >> Para obter mais opções, acesse https://groups.google.com/groups/opt_out. >> >> >> > > -- 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 [email protected]. Para postar neste grupo, envie um e-mail para [email protected]. Visite este grupo em http://groups.google.com/group/kohana-php?hl=pt-BR. Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
