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.


Responder a