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.


Responder a