Find('list'), dois campos e order não funciona?

9 views
Skip to first unread message

Celso

unread,
Nov 10, 2009, 12:48:24 PM11/10/09
to Cake PHP Português
$proprietarios = $this->Multa->Veiculo->Proprietario->find('list',
array(
'order' => 'nome',
'fields' => 'nome' ));
****resultado:

Array
(
[57] =>
[19] => -
[15] => -
[27] => aaaa!
[26] => aaaaaaaa
[25] => aaaaaaaa
[51] => bla
[16] => celso
[17] => celso
[9] => Celso
[46] => Frederico
[3] => Gabriel
[45] => Gloria7777
[55] => paulo
[70] => qqqqqqqqqqqqqqqqqq
[7] => Rafael
[44] => Rita
[56] => Rita
[63] => Rita
[61] => Rita
[5] => Rita P
[65] => RitaRita
[67] => RitaRita
[66] => RitaRita
[18] => rufino
[48] => teste
[59] => Teste
[58] => Teste
[42] => teste
[10] => Testolino da Silva
[60] => tiago
[62] => tiago
[6] => Tiago Imazio
[36] => tom, o gato
[13] => Ultimos ultimatos
[1] => Usla
[69] => uuuuuuuuuuuuuuuuuu
[71] => Velinho da Silva
[68] => wefwerwedwerwe
[43] => Zé Ramalho
)

$proprietarios = $this->Multa->Veiculo->Proprietario-
>find('list',
array(
'order' => 'nome',
'fields' => 'email,nome' ));

****resultado:

Array
(
[] => Zé Ramalho
[celsowm@gmailcom] => aaaaaaaa
[d] => celso
[a...@ig.com.br] => wefwerwedwerwe
[rita.pa...@detran.rj.gov.br] => Rita
[tiago.rdorififf...@ddddd.com] => tiago
[b...@gmail.com] => uuuuuuuuuuuuuuuuuu
[ve...@velho.com] => Velinho da Silva
)

asort($proprietarios) foi a solução...

***Por que?

Felipe Theodoro

unread,
Nov 10, 2009, 12:59:41 PM11/10/09
to cake-...@googlegroups.com
qual foi a query qye ele gero?

2009/11/10 Celso <cel...@gmail.com>



--
Felipe Theodoro Gonçalves
ftgon...@gmail.com
blog.ftgoncalves.com
--

Celso

unread,
Nov 10, 2009, 1:37:16 PM11/10/09
to Cake PHP Português
SELECT `Proprietario`.`email`, `Proprietario`.`nome` FROM
`proprietarios` AS `Proprietario` WHERE 1 = 1 ORDER BY `nome` ASC

no banco funciona numa boa... mas o array num vem certo...

On 10 nov, 14:59, Felipe Theodoro <ftgoncal...@gmail.com> wrote:
> qual foi a query qye ele gero?
>
> 2009/11/10 Celso <cels...@gmail.com>
> ftgoncal...@gmail.com
> blog.ftgoncalves.com
> --

Josenivaldo Benito Junior

unread,
Nov 10, 2009, 3:25:31 PM11/10/09
to cake-...@googlegroups.com
Felipe,

Faz alguns dias fiz um comentário com problema semelhante ao seu. Naquele caso eu queria fazer uma find('list') com condições mais complexas mas não tive sucesso. Sempre que coloco qualquer coisa fora do padrão para o find('list') ele vira um find('all') ou gera erro. Parece-me que a implementação do modo 'list' é bem simplória mesmo não vislumbrando usos mais avançados.

Abraço,

73 ES DX PU2LBD
Josenivaldo Benito Junior
Social me LinkedinFacebookFlickrPicasaGoogle Reader


2009/11/10 Celso <cel...@gmail.com>

Rodrigo Rodrigues Moyle

unread,
Nov 12, 2009, 8:53:47 PM11/12/09
to cake-...@googlegroups.com
Celso pelo que percebi parece que tem e-mails repetidos para nomes diferentes, por isso está vindo fora da ordem, deixa ver se consigo explicar:

Se os dados forem assim:

a...@a.com: Alberto
b...@b.com: Bruno
c...@c.com: Carlos
a...@a.com: Zé Roberto

Quando o Cake for colocar isso num array vai ser assim:

1º item: a...@a.com -> Alberto vai ficar:

array(
a...@a.com => Alberto
)

2º item: b...@b.com -> Bruno:

array(
a...@a.com => Alberto,
b...@b.com => Bruno
)

3º Item c...@c.com => Carlos:

array(
a...@a.com => Alberto,
b...@b.com => Bruno,
c...@c.com => Carlos
)

4º Item a...@a.com => Zé Roberto, muita atenção agora, como o item a...@a.com já existe no array, o PHP ao invés de anexar e colocar na ordem, vai simplesmente substituir o item já existente, então vai ficar assim:

array(
a...@a.com => Zé Roberto,
b...@b.com => Bruno,
c...@c.com => Carlos
)

Acho que consegui ser claro na explicação né.

Abraços

2009/11/10 Celso <cel...@gmail.com>
Reply all
Reply to author
Forward
0 new messages