Valeu to indo pra faculdade, na volta eu testo t+
Em 24 de maio de 2013 17:37, felipe bastos <[email protected]> escreveu: > Ah tá .. vc tá usando varias tabelas .. > > o que tentei explicar era algo +/- assim .. feito de cabeça > > https://gist.github.com/felipebastosweb/5646351 > > > Em 24 de maio de 2013 14:15, Douglas J.A.M <[email protected]>escreveu: > > Tenho uma paradinha de menus aninhados eternos, talvez lhe interesse ou >> outra pessoa, a estrutura é pessoa esta vinculada a uma pessoa pai, tem >> ate impressao >> >> >> *Model Menu* >> * >> * >> * *class Model_Menu extends ORM { >> .. >> protected $_belongs_to = array('pai' => array('model' => 'menu', >> 'foreign_key' => 'menu_id')); >> >> public static function getMenus() { >> return ORM::Factory('menu') >> ->find_all() >> ->as_array('id', 'descricao'); >> } >> >> >> *Helper de Impressao* >> * >> * >> * *public static function imprimeMenu(&$saida, array $menus, $pai = 0, >> $nivel = 0) { >> >> $atributos = ''; >> if ($pai == 0) >> $atributos = ' class="sf-menu"'; >> >> $i = 0; >> >> $saida .= str_repeat(" ", $nivel) . "<ul$atributos>" . PHP_EOL; >> >> if (isset($menus[$pai])) { >> foreach ($menus[$pai] as $id => $menu) { >> >> // imprime o item do menu >> $saida .= str_repeat(" ", $nivel + 4); >> $saida .= '<li>'; >> $saida .= '<a href="' . strtolower($menu['url']) . '" >> class="' . ($i == 0 && $nivel == 0 ? 'first' : '') . '">'; >> >> >> if ($menu['exibe_icone'] != "N") >> $saida .= '<img src="' . URL::base() . >> 'media/imagens/icones/' . strtolower($menu['icone']) . '" /> '; >> else >> $saida .= '<img src="' . URL::base() . >> 'media/imagens/icones/empty.png" /> '; >> >> if ($menu['exibe_descricao'] != "N") >> $saida .= $menu['descricao']; >> >> if (isset($menus[$id])) { >> if ($nivel == 0) >> $saida .= '<img src="' . URL::base() . >> 'media/imagens/icones/arrow_down_gray.png" /> '; >> else >> $saida .= '<img src="' . URL::base() . >> 'media/imagens/icones/arrow_right_gray.png" /> '; >> } >> >> $saida .= '</a>'; >> >> // se tiver filhos, entra recursivamente >> if (isset($menus[$id])) >> self::imprimeMenu($saida, $menus, $id, $nivel + 4); >> >> $saida .= '</li>' . PHP_EOL; >> >> $i++; >> } >> } >> >> $saida .= str_repeat(" ", $nivel) . '</ul>' . PHP_EOL; >> } >> >> public static function getMenu() { >> >> $grupo = Helper_USUARIO::getGrupo(); >> >> if ($grupo->grupomenu->id == null) { >> $menus = $grupo->menus; >> } else { >> $menus = $grupo->grupomenu->menus; >> } >> >> $menus = $menus->where('ativo', '!=', 'N') >> ->order_by('ordem', 'asc') >> ->order_by('descricao', 'asc') >> ->find_all(); >> >> foreach ($menus as $menu) { >> >> if ($menu->pai->id == null) >> $menu->pai->id = 0; >> >> $menuArray[$menu->pai->id][$menu->id] = >> array('descricao' => $menu->descricao, >> 'icone' => $menu->icone, >> 'exibe_descricao' => $menu->exibe_descricao, >> 'exibe_icone' => $menu->exibe_icone, >> 'url' => $menu->url); >> } >> >> $saida = ''; >> >> if (isset($menuArray)) { >> self::imprimeMenu($saida, $menuArray); >> } >> >> return $saida; >> } >> >> []s, >> >> Douglas J.A.M >> [email protected] >> (37) 9949-8949 >> >> >> Em 24 de maio de 2013 14:05, Fabyo Guimaraes <[email protected]>escreveu: >> >> Felipe do jeito que voce falou deu certo em parte funcionou para o pai >>> menos para o avo >>> >>> $accounts = ORM::Factory('filho') >>> ->with('pai') >>> ->order_by('pai.name', 'ASC') >>> >>> só que para o avo nao deu certo porque o filho nao tem relação direta >>> com o avo e sim com o pai >>> entao como ficaria para ordenar o avo? >>> tentei isso mas nao deu >>> >>> $accounts = ORM::Factory('filho') >>> ->with('avo') >>> ->order_by('avo.name', 'ASC') >>> >>> Database_Exception [ 1054 ]: Unknown column 'avo.name' in 'order clause' >>> >>> >>> Em 24 de maio de 2013 13:49, Fabyo Guimaraes <[email protected]>escreveu: >>> >>> Valeu Felipe vou tentar dessa maneira tbm >>>> >>>> >>>> >>>> Em 24 de maio de 2013 13:11, felipe bastos <[email protected]>escreveu: >>>> >>>> Opa, cheguei e nao li tudo .. >>>>> >>>>> Acho que fez uma arvora de tres niveis: filho, pai e avo ;) >>>>> >>>>> Imagino que tenha colocado .. >>>>> >>>>> Model Algo >>>>> Belongs_to pai array model Algo >>>>> >>>>> Sua chave estrangeira de si proprio deve ser pai_id >>>>> >>>>> Assim, o avo é o pai do pai (obvio) >>>>> >>>>> $filho .... >>>>> $pai ... $filho-pai; >>>>> $avo ... $filho-pai-pai; >>>>> >>>>> Neste caso, vc pode ordenar por pai_id .. >>>>> >>>>> E para ordenar pelo avo, tem de usar with(campo belongs nome pai) .. >>>>> >>>>> Fica, order_by("pai.pai_id desc") >>>>> >>>>> Se ainda nao resolveu, ve se isso resolve. >>>>> >>>>> Enviado via sp android >>>>> Em 24/05/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. >>> >>> >>> >> >> -- >> 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. >> >> >> > > > > -- > http://agilesocial.net > http://twitter.com/felipebastosweb > http://facebook.com/felipebastosweb > > -- > 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.
