Zend_Db_Table - fetchRow vs find()->current()... onde usar e qual usar?

98 views
Skip to first unread message

Wemerson Couto Guimarães

unread,
Mar 28, 2012, 10:13:50 AM3/28/12
to zfbr...@googlegroups.com
Pessoal estou com uma dúvida sobre onde usar os métodos fetchRow( ) e Find()... visto que os 2 vão retornar a mesma linha, correto? Qual a diferença entre eles e onde devo utilizar cada um?


$minhaDbTable = new Application_Model_DbTable_Qualquer();

// Uso assim:
$registro = $ $minhaDbTable ->find( 999 )-current();

// ou assim:
$registro =  $minhaDbTable ->find( "id = 999" ); 




--
Wemerson Guimarães
Rio Verde - Go - Brasil

Leandro Sales

unread,
Mar 28, 2012, 10:34:40 AM3/28/12
to zfbr...@googlegroups.com
find() é usado para buscar apenas pela chave primária da tabela, enquanto fetchRow você pode buscar por qualquer outro campo.

--
Leandro Sales
Desenvolvedor Web
@leandroasp | +55 86 9427-5626


--
Essa mensagem faz parte do grupo "zfbrasil" no Google Groups.
Para escrever neste grupo, envie um email para zfbr...@googlegroups.com
Para se desligar do grupo, envie um email para zfbrasil-u...@googlegroups.com
Mais informações, visite o grupo em http://groups.google.com/group/zfbrasil?hl=pt-BR

Diogo Matheus

unread,
Mar 28, 2012, 12:22:20 PM3/28/12
to zfbr...@googlegroups.com
find retorna um Rowset, ou seja, uma lista de resultados, por isso você precisa utilizar o current() após sua chamada, para pegar o primeiro.

Já o fetchRow retorna uma Row.

O motivo pelo qual o find retorna um Rowset é que você pode passar varias chaves para retornar o registro de cada uma delas.
--
Att,

Diogo Matheus Costa

Wemerson Couto Guimarães

unread,
Mar 28, 2012, 1:22:27 PM3/28/12
to zfbr...@googlegroups.com
Hum... entendi... como pro exemplo $elemento->find($chave1, $chave2, $chave3) ?

Wemerson Couto Guimarães

unread,
Mar 28, 2012, 1:22:38 PM3/28/12
to zfbr...@googlegroups.com
Beleza... assim ficou claro.

Em 28 de março de 2012 11:34, Leandro Sales <leand...@gmail.com> escreveu:

Juliano Buzanello

unread,
Mar 29, 2012, 7:49:15 AM3/29/12
to zfbr...@googlegroups.com
Wemerson
para o find deve ser passado a chave primaria de sua table observando a ordem de definição;

Ex: 1) se sua table possui apenas uma chave:

protected $_primary = 'id'

logo seu find pode ser assim ->find(1): retorna apenas o registro da chave 1
                                      ou ->find(array(1,2,5)): retorna os registros das chaves 1,2 e 5


se sua table possui chave composta:
protected $_primary = array('id_user','id_xpto')

seu find deve ser assim ->find(1,20) onde 1=id_user e 20=id_xpto OBS: mesma ordem da $_primary da teble


Espero ter ajudado
__________________________________________________________
"Quem trabalha muito
, erra muito. Quem trabalha pouco, erra pouco. 
Quem não trabalha, não erra e... quem não erra é promovido!"

Wemerson Couto Guimarães

unread,
Mar 29, 2012, 10:13:23 AM3/29/12
to zfbr...@googlegroups.com
Maravilha... valeu Juliano..

eu tava pensando que era só ->find(id1, id2, id3)... sem ser por array... agora ficou claro.
Reply all
Reply to author
Forward
0 new messages