Find em Multiplos Modelos com campo calculado
O grupo no qual você está postando é um
grupo da Usenet . As mensagens postadas neste grupo farão com que o seu e-mail fique visível para qualquer pessoa na internet.
Sua resposta não foi enviada.
Postagem publicada
De:
Celso <cels... @gmail.com>
Data: Wed, 4 Nov 2009 05:17:18 -0800 (PST)
Local: Qua 4 nov 2009 11:17
Assunto: Find em Multiplos Modelos com campo calculado
*Olá Galera!
*Estou com esse modelo:
http://picasaweb.google.com.br/celsowm/Screenshots#5399915797002091778
*E preciso recuperar isto:
Proprietario.nome , Veiculo.placa , sum (Infracoes.pontuacao) as
pontos
Proprietario "hasMany" Veiculo
Veiculo "habBelongsToMany" Infracoes
*Queria algo assim:
SELECT Veiculo.placa, Proprietario.nome, sum(Infracao.pontuacao) as
pontos FROM proprietarios AS Proprietario
LEFT JOIN veiculos AS Veiculo ON (Veiculo.proprietario_id =
Proprietario.id)
LEFT JOIN multas AS Multa ON (Multa.veiculo_id = Veiculo.id)
LEFT JOIN infracoes AS Infracao ON (Infracao.id = Multa.infracao_id
*Eu tentei várias coisa como cointainable e recursive, mas parece que
a única solução será montar os joins no array
Valeu comunidade Brazuca,
Att. Celso
É necessário
Acessar antes de postar mensagens.
Você não tem a permissão necessária para postar.
De:
Gabriel Gilini <gabr... @usosim.com.br>
Data: Wed, 4 Nov 2009 14:35:50 -0200
Local: Qua 4 nov 2009 14:35
Assunto: Re: [CakePHP-Tuga] Find em Multiplos Modelos com campo calculado
2009/11/4 Celso <cels... @gmail.com>:
E Multa?
> *Queria algo assim:
> SELECT Veiculo.placa, Proprietario.nome, sum(Infracao.pontuacao) as > pontos FROM proprietarios AS Proprietario
> LEFT JOIN veiculos AS Veiculo ON (Veiculo.proprietario_id = > Proprietario.id)
> LEFT JOIN multas AS Multa ON (Multa.veiculo_id = Veiculo.id)
> LEFT JOIN infracoes AS Infracao ON (Infracao.id = Multa.infracao_id
OK
> *Eu tentei várias coisa como cointainable e recursive, mas parece que > a única solução será montar os joins no array
E qual o problema? Você não mostrou *o que deu errado* nem *o que você tá fazendo*. -- Gabriel Gilini
www.usosim.com.br gabr... @usosim.com.br
É necessário
Acessar antes de postar mensagens.
Você não tem a permissão necessária para postar.
De:
Mauro Thiago <maurothi... @gmail.com>
Data: Wed, 4 Nov 2009 14:42:16 -0200
Local: Qua 4 nov 2009 14:42
Assunto: Re: [CakePHP-Tuga] Re: Find em Multiplos Modelos com campo calculado
Creio que esteja faltando campos no Proprietário, pois ambas as tables
necessitam do campos para trabalhar.
A Table Proprietário necessita de um campo como FK (chave estrageira) para
receber o id da Pessoa Fisica / Juridica e Id do Veiculo.
Thiago
2009/11/4 Gabriel Gilini <gabr... @usosim.com.br>
> 2009/11/4 Celso <cels... @gmail.com>:
> > *Olá Galera!
> > *Estou com esse modelo:
> > http://picasaweb.google.com.br/celsowm/Screenshots#5399915797002091778
> > *E preciso recuperar isto:
> > Proprietario.nome , Veiculo.placa , sum (Infracoes.pontuacao) as
> > pontos
> > Proprietario "hasMany" Veiculo
> > Veiculo "habBelongsToMany" Infracoes
> E Multa?
> > *Queria algo assim:
> > SELECT Veiculo.placa, Proprietario.nome, sum(Infracao.pontuacao) as
> > pontos FROM proprietarios AS Proprietario
> > LEFT JOIN veiculos AS Veiculo ON (Veiculo.proprietario_id =
> > Proprietario.id)
> > LEFT JOIN multas AS Multa ON (Multa.veiculo_id = Veiculo.id)
> > LEFT JOIN infracoes AS Infracao ON (Infracao.id = Multa.infracao_id
> OK
> > *Eu tentei várias coisa como cointainable e recursive, mas parece que
> > a única solução será montar os joins no array
> E qual o problema? Você não mostrou *o que deu errado* nem *o que você
> tá fazendo*.
> --
> Gabriel Gilini
> www.usosim.com.br
> gabr... @usosim.com.br
É necessário
Acessar antes de postar mensagens.
Você não tem a permissão necessária para postar.
De:
Celso <cels... @gmail.com>
Data: Wed, 4 Nov 2009 10:48:36 -0800 (PST)
Local: Qua 4 nov 2009 16:48
Assunto: Re: Find em Multiplos Modelos com campo calculado
Desculpem a falta de mais detalhes, mas acho que descobri um BUG no
containable:
***Funciona (sem "sum")
$this->Proprietario->Behaviors->attach('Containable');
$this->Proprietario->find('all', array(
'contain'=>array(
'Veiculo' => array(
'Infracao' => array (
'fields' => array('(Infracao.id) as
pontos')
)
)
),
)
);
***Não funciona (com "sum"):
$this->Proprietario->Behaviors->attach('Containable');
$this->Proprietario->find('all', array(
'contain'=>array(
'Veiculo' => array(
'Infracao' => array (
'fields' => array('sum(Infracao.id) as
pontos')
)
)
),
)
);
Neste segundo caso ele meio que ignora o "$useTable" e dá o erro:
Notice (8): Undefined index: Infracaos [CORE\cake\libs\model
\datasources\dbo_source.php, line 1012]
***Não é a primeira vez que tenho problemas com campos calculados no
CAKE...
On 4 nov, 13:42, Mauro Thiago <maurothi... @gmail.com> wrote:
> Creio que esteja faltando campos no Proprietário, pois ambas as tables
> necessitam do campos para trabalhar.
> A Table Proprietário necessita de um campo como FK (chave estrageira) para
> receber o id da Pessoa Fisica / Juridica e Id do Veiculo.
> Thiago
> 2009/11/4 Gabriel Gilini <gabr... @usosim.com.br>
> > 2009/11/4 Celso <cels... @gmail.com>:
> > > *Olá Galera!
> > > *Estou com esse modelo:
> > >http://picasaweb.google.com.br/celsowm/Screenshots#5399915797002091778
> > > *E preciso recuperar isto:
> > > Proprietario.nome , Veiculo.placa , sum (Infracoes.pontuacao) as
> > > pontos
> > > Proprietario "hasMany" Veiculo
> > > Veiculo "habBelongsToMany" Infracoes
> > E Multa?
> > > *Queria algo assim:
> > > SELECT Veiculo.placa, Proprietario.nome, sum(Infracao.pontuacao) as
> > > pontos FROM proprietarios AS Proprietario
> > > LEFT JOIN veiculos AS Veiculo ON (Veiculo.proprietario_id =
> > > Proprietario.id)
> > > LEFT JOIN multas AS Multa ON (Multa.veiculo_id = Veiculo.id)
> > > LEFT JOIN infracoes AS Infracao ON (Infracao.id = Multa.infracao_id
> > OK
> > > *Eu tentei várias coisa como cointainable e recursive, mas parece que
> > > a única solução será montar os joins no array
> > E qual o problema? Você não mostrou *o que deu errado* nem *o que você
> > tá fazendo*.
> > --
> > Gabriel Gilini
> >www.usosim.com.br
> > gabr... @usosim.com.br
É necessário
Acessar antes de postar mensagens.
Você não tem a permissão necessária para postar.
De:
Desenvolvimento SiscoJ <siscoj... @gmail.com>
Data: Wed, 4 Nov 2009 17:07:50 -0200
Local: Qua 4 nov 2009 17:07
Assunto: Re: [CakePHP-Tuga] Re: Find em Multiplos Modelos com campo calculado
Por acaso isso resultou em uma query montada de forma correta?
Só por desencargo....
att.
2009/11/4 Celso <cels... @gmail.com>:
> Desculpem a falta de mais detalhes, mas acho que descobri um BUG no
> containable:
> ***Funciona (sem "sum")
> $this->Proprietario->Behaviors->attach('Containable');
> $this->Proprietario->find('all', array(
> 'contain'=>array(
> 'Veiculo' => array(
> 'Infracao' => array (
> 'fields' => array('(Infracao.id) as
> pontos')
> )
> )
> ),
> )
> );
> ***Não funciona (com "sum"):
> $this->Proprietario->Behaviors->attach('Containable');
> $this->Proprietario->find('all', array(
> 'contain'=>array(
> 'Veiculo' => array(
> 'Infracao' => array (
> 'fields' => array('sum(Infracao.id) as
> pontos')
> )
> )
> ),
> )
> );
> Neste segundo caso ele meio que ignora o "$useTable" e dá o erro:
> Notice (8): Undefined index: Infracaos [CORE\cake\libs\model
> \datasources\dbo_source.php, line 1012]
> ***Não é a primeira vez que tenho problemas com campos calculados no
> CAKE...
> On 4 nov, 13:42, Mauro Thiago <maurothi... @gmail.com> wrote:
>> Creio que esteja faltando campos no Proprietário, pois ambas as tables
>> necessitam do campos para trabalhar.
>> A Table Proprietário necessita de um campo como FK (chave estrageira) para
>> receber o id da Pessoa Fisica / Juridica e Id do Veiculo.
>> Thiago
>> 2009/11/4 Gabriel Gilini <gabr... @usosim.com.br>
>> > 2009/11/4 Celso <cels... @gmail.com>:
>> > > *Olá Galera!
>> > > *Estou com esse modelo:
>> > >http://picasaweb.google.com.br/celsowm/Screenshots#5399915797002091778
>> > > *E preciso recuperar isto:
>> > > Proprietario.nome , Veiculo.placa , sum (Infracoes.pontuacao) as
>> > > pontos
>> > > Proprietario "hasMany" Veiculo
>> > > Veiculo "habBelongsToMany" Infracoes
>> > E Multa?
>> > > *Queria algo assim:
>> > > SELECT Veiculo.placa, Proprietario.nome, sum(Infracao.pontuacao) as
>> > > pontos FROM proprietarios AS Proprietario
>> > > LEFT JOIN veiculos AS Veiculo ON (Veiculo.proprietario_id =
>> > > Proprietario.id)
>> > > LEFT JOIN multas AS Multa ON (Multa.veiculo_id = Veiculo.id)
>> > > LEFT JOIN infracoes AS Infracao ON (Infracao.id = Multa.infracao_id
>> > OK
>> > > *Eu tentei várias coisa como cointainable e recursive, mas parece que
>> > > a única solução será montar os joins no array
>> > E qual o problema? Você não mostrou *o que deu errado* nem *o que você
>> > tá fazendo*.
>> > --
>> > Gabriel Gilini
>> >www.usosim.com.br
>> > gabr... @usosim.com.br
É necessário
Acessar antes de postar mensagens.
Você não tem a permissão necessária para postar.
De:
Celso <cels... @gmail.com>
Data: Wed, 4 Nov 2009 12:51:03 -0800 (PST)
Local: Qua 4 nov 2009 18:51
Assunto: Re: Find em Multiplos Modelos com campo calculado
ele montou essas querys sem erros:
SELECT `Proprietario`.`id`, `Proprietario`.`nome`,
`Proprietario`.`endereco`, `Proprietario`.`email`,
`Proprietario`.`idade` FROM `proprietarios` AS `Proprietario` WHERE 1
= 1
SELECT `Veiculo`.`id`, `Veiculo`.`placa`, `Veiculo`.`proprietario_id`
FROM `veiculos` AS `Veiculo` WHERE `Veiculo`.`proprietario_id` IN (1,
3, 5, 6, 7, 9, 10, 13, 15, 16, 17, 18, 19, 25, 26, 27, 36, 42, 43, 44,
45, 46, 48, 51, 55, 56, 57, 58, 59, 60, 61, 62, 63, 65, 66, 67, 68,
69, 70)
SELECT sum(pontuacao) as pontos, `Multa`.`id`, `Multa`.`veiculo_id`,
`Multa`.`infracao_id`, `Multa`.`data`, `Multa`.`local` FROM
`infracoes` AS `Infracao` JOIN `multas` AS `Multa` ON
(`Multa`.`veiculo_id` IN (4, 6, 8, 11, 13, 15, 20, 21) AND
`Multa`.`infracao_id` = `Infracao`.`id`) WHERE 1 = 1
**Quando eu tiro os fields, eu consigo um array assim:
Array
(
[0] => Array
(
[id] => 6
[placa] => GAY-2424
[proprietario_id] => 1
[Infracao] => Array
(
[0] => Array
(
[id] => 7
[nome] => Estacionar o veículo em
desacordo com as condições regulamentadas especificamente pela
sinalização.
[pontuacao] => 3
[Multa] => Array
(
[id] => 1
[veiculo_id] => 6
[infracao_id] => 7
[data] => 2009-10-22
[local] => u ghg
)
)
Vou simular via php um "SUM" (vendo quando ocorrências tem no array de
infracao) acho que o jeito.
On 4 nov, 16:07, Desenvolvimento SiscoJ <siscoj... @gmail.com> wrote:
> Por acaso isso resultou em uma query montada de forma correta?
> Só por desencargo....
> att.
> 2009/11/4 Celso <cels... @gmail.com>:
> > Desculpem a falta de mais detalhes, mas acho que descobri um BUG no
> > containable:
> > ***Funciona (sem "sum")
> > $this->Proprietario->Behaviors->attach('Containable');
> > $this->Proprietario->find('all', array(
> > 'contain'=>array(
> > 'Veiculo' => array(
> > 'Infracao' => array (
> > 'fields' => array('(Infracao.id) as
> > pontos')
> > )
> > )
> > ),
> > )
> > );
> > ***Não funciona (com "sum"):
> > $this->Proprietario->Behaviors->attach('Containable');
> > $this->Proprietario->find('all', array(
> > 'contain'=>array(
> > 'Veiculo' => array(
> > 'Infracao' => array (
> > 'fields' => array('sum(Infracao.id) as
> > pontos')
> > )
> > )
> > ),
> > )
> > );
> > Neste segundo caso ele meio que ignora o "$useTable" e dá o erro:
> > Notice (8): Undefined index: Infracaos [CORE\cake\libs\model
> > \datasources\dbo_source.php, line 1012]
> > ***Não é a primeira vez que tenho problemas com campos calculados no
> > CAKE...
> > On 4 nov, 13:42, Mauro Thiago <maurothi... @gmail.com> wrote:
> >> Creio que esteja faltando campos no Proprietário, pois ambas as tables
> >> necessitam do campos para trabalhar.
> >> A Table Proprietário necessita de um campo como FK (chave estrageira) para
> >> receber o id da Pessoa Fisica / Juridica e Id do Veiculo.
> >> Thiago
> >> 2009/11/4 Gabriel Gilini <gabr... @usosim.com.br>
> >> > 2009/11/4 Celso <cels... @gmail.com>:
> >> > > *Olá Galera!
> >> > > *Estou com esse modelo:
> >> > >http://picasaweb.google.com.br/celsowm/Screenshots#5399915797002091778
> >> > > *E preciso recuperar isto:
> >> > > Proprietario.nome , Veiculo.placa , sum (Infracoes.pontuacao) as
> >> > > pontos
> >> > > Proprietario "hasMany" Veiculo
> >> > > Veiculo "habBelongsToMany" Infracoes
> >> > E Multa?
> >> > > *Queria algo assim:
> >> > > SELECT Veiculo.placa, Proprietario.nome, sum(Infracao.pontuacao) as
> >> > > pontos FROM proprietarios AS Proprietario
> >> > > LEFT JOIN veiculos AS Veiculo ON (Veiculo.proprietario_id =
> >> > > Proprietario.id)
> >> > > LEFT JOIN multas AS Multa ON (Multa.veiculo_id = Veiculo.id)
> >> > > LEFT JOIN infracoes AS Infracao ON (Infracao.id = Multa.infracao_id
> >> > OK
> >> > > *Eu tentei várias coisa como cointainable e recursive, mas parece que
> >> > > a única solução será montar os joins no array
> >> > E qual o problema? Você não mostrou *o que deu errado* nem *o que você
> >> > tá fazendo*.
> >> > --
> >> > Gabriel Gilini
> >> >www.usosim.com.br
> >> > gabr... @usosim.com.br
É necessário
Acessar antes de postar mensagens.
Você não tem a permissão necessária para postar.
De:
Edinei Luis Cipriani <phpedi... @gmail.com>
Data: Wed, 4 Nov 2009 19:03:00 -0200
Assunto: Re: [CakePHP-Tuga] Re: Find em Multiplos Modelos com campo calculado
Quando vc coloca o SUM, como ele monta a query?
Você pode usar parametros no model para isso tbém.
Em 04/11/2009, às 18:51, Celso escreveu:
> ele montou essas querys sem erros:
> SELECT `Proprietario`.`id`, `Proprietario`.`nome`,
> `Proprietario`.`endereco`, `Proprietario`.`email`,
> `Proprietario`.`idade` FROM `proprietarios` AS `Proprietario` WHERE 1
> = 1
> SELECT `Veiculo`.`id`, `Veiculo`.`placa`, `Veiculo`.`proprietario_id`
> FROM `veiculos` AS `Veiculo` WHERE `Veiculo`.`proprietario_id` IN (1,
> 3, 5, 6, 7, 9, 10, 13, 15, 16, 17, 18, 19, 25, 26, 27, 36, 42, 43, 44,
> 45, 46, 48, 51, 55, 56, 57, 58, 59, 60, 61, 62, 63, 65, 66, 67, 68,
> 69, 70)
> SELECT sum(pontuacao) as pontos, `Multa`.`id`, `Multa`.`veiculo_id`,
> `Multa`.`infracao_id`, `Multa`.`data`, `Multa`.`local` FROM
> `infracoes` AS `Infracao` JOIN `multas` AS `Multa` ON
> (`Multa`.`veiculo_id` IN (4, 6, 8, 11, 13, 15, 20, 21) AND
> `Multa`.`infracao_id` = `Infracao`.`id`) WHERE 1 = 1
> **Quando eu tiro os fields, eu consigo um array assim:
> Array
> (
> [0] => Array
> (
> [id] => 6
> [placa] => GAY-2424
> [proprietario_id] => 1
> [Infracao] => Array
> (
> [0] => Array
> (
> [id] => 7
> [nome] => Estacionar o veículo em
> desacordo com as condições regulamentadas especificamente pela
> sinalização.
> [pontuacao] => 3
> [Multa] => Array
> (
> [id] => 1
> [veiculo_id] => 6
> [infracao_id] => 7
> [data] => 2009-10-22
> [local] => u ghg
> )
> )
> Vou simular via php um "SUM" (vendo quando ocorrências tem no array de
> infracao) acho que o jeito.
> On 4 nov, 16:07, Desenvolvimento SiscoJ <siscoj... @gmail.com> wrote:
>> Por acaso isso resultou em uma query montada de forma correta?
>> Só por desencargo....
>> att.
>> 2009/11/4 Celso <cels... @gmail.com>:
>>> Desculpem a falta de mais detalhes, mas acho que descobri um BUG no
>>> containable:
>>> ***Funciona (sem "sum")
>>> $this->Proprietario->Behaviors->attach('Containable');
>>> $this->Proprietario->find('all', array(
>>> 'contain'=>array(
>>> 'Veiculo' => array(
>>> 'Infracao' => array (
>>> 'fields' => array('(Infracao.id) as
>>> pontos')
>>> )
>>> )
>>> ),
>>> )
>>> );
>>> ***Não funciona (com "sum"):
>>> $this->Proprietario->Behaviors->attach('Containable');
>>> $this->Proprietario->find('all', array(
>>> 'contain'=>array(
>>> 'Veiculo' => array(
>>> 'Infracao' => array (
>>> 'fields' => array('sum(Infracao.id) as
>>> pontos')
>>> )
>>> )
>>> ),
>>> )
>>> );
>>> Neste segundo caso ele meio que ignora o "$useTable" e dá o erro:
>>> Notice (8): Undefined index: Infracaos [CORE\cake\libs\model
>>> \datasources\dbo_source.php, line 1012]
>>> ***Não é a primeira vez que tenho problemas com campos calculados no
>>> CAKE...
>>> On 4 nov, 13:42, Mauro Thiago <maurothi... @gmail.com> wrote:
>>>> Creio que esteja faltando campos no Proprietário, pois ambas as
>>>> tables
>>>> necessitam do campos para trabalhar.
>>>> A Table Proprietário necessita de um campo como FK (chave
>>>> estrageira) para
>>>> receber o id da Pessoa Fisica / Juridica e Id do Veiculo.
>>>> Thiago
>>>> 2009/11/4 Gabriel Gilini <gabr... @usosim.com.br>
>>>>> 2009/11/4 Celso <cels... @gmail.com>:
>>>>>> *Olá Galera!
>>>>>> *Estou com esse modelo:
>>>>>> http://picasaweb.google.com.br/celsowm/Screenshots#5399915797002091778
>>>>>> *E preciso recuperar isto:
>>>>>> Proprietario.nome , Veiculo.placa , sum
>>>>>> (Infracoes.pontuacao) as
>>>>>> pontos
>>>>>> Proprietario "hasMany" Veiculo
>>>>>> Veiculo "habBelongsToMany" Infracoes
>>>>> E Multa?
>>>>>> *Queria algo assim:
>>>>>> SELECT Veiculo.placa, Proprietario.nome,
>>>>>> sum(Infracao.pontuacao) as
>>>>>> pontos FROM proprietarios AS Proprietario
>>>>>> LEFT JOIN veiculos AS Veiculo ON (Veiculo.proprietario_id =
>>>>>> Proprietario.id)
>>>>>> LEFT JOIN multas AS Multa ON (Multa.veiculo_id = Veiculo.id)
>>>>>> LEFT JOIN infracoes AS Infracao ON (Infracao.id =
>>>>>> Multa.infracao_id
>>>>> OK
>>>>>> *Eu tentei várias coisa como cointainable e recursive, mas
>>>>>> parece que
>>>>>> a única solução será montar os joins no array
>>>>> E qual o problema? Você não mostrou *o que deu errado* nem *o
>>>>> que você
>>>>> tá fazendo*.
>>>>> --
>>>>> Gabriel Gilini
>>>>> www.usosim.com.br
>>>>> gabr... @usosim.com.br
É necessário
Acessar antes de postar mensagens.
Você não tem a permissão necessária para postar.
De:
Desenvolvimento SiscoJ <siscoj... @gmail.com>
Data: Wed, 4 Nov 2009 19:10:02 -0200
Local: Qua 4 nov 2009 19:10
Assunto: Re: [CakePHP-Tuga] Re: Find em Multiplos Modelos com campo calculado
putz... deu minha hora...
veja se isso ajuda:
http://osdir.com/ml/CakePHP/2009-10/msg00000.html
parece q o cake nao adiciona o atributo no model....
ae tem q seguir esse caminho:
http://teknoid.wordpress.com/2008/09/29/dealing-with-calculated-field...
att.
2009/11/4 Celso <cels... @gmail.com>:
> ele montou essas querys sem erros:
> SELECT `Proprietario`.`id`, `Proprietario`.`nome`,
> `Proprietario`.`endereco`, `Proprietario`.`email`,
> `Proprietario`.`idade` FROM `proprietarios` AS `Proprietario` WHERE 1
> = 1
> SELECT `Veiculo`.`id`, `Veiculo`.`placa`, `Veiculo`.`proprietario_id`
> FROM `veiculos` AS `Veiculo` WHERE `Veiculo`.`proprietario_id` IN (1,
> 3, 5, 6, 7, 9, 10, 13, 15, 16, 17, 18, 19, 25, 26, 27, 36, 42, 43, 44,
> 45, 46, 48, 51, 55, 56, 57, 58, 59, 60, 61, 62, 63, 65, 66, 67, 68,
> 69, 70)ra...
> SELECT sum(pontuacao) as pontos, `Multa`.`id`, `Multa`.`veiculo_id`,
> `Multa`.`infracao_id`, `Multa`.`data`, `Multa`.`local` FROM
> `infracoes` AS `Infracao` JOIN `multas` AS `Multa` ON
> (`Multa`.`veiculo_id` IN (4, 6, 8, 11, 13, 15, 20, 21) AND
> `Multa`.`infracao_id` = `Infracao`.`id`) WHERE 1 = 1
> **Quando eu tiro os fields, eu consigo um array assim:
> Array
> (
> [0] => Array
> (
> [id] => 6
> [placa] => GAY-2424
> [proprietario_id] => 1
> [Infracao] => Array
> (
> [0] => Array
> (
> [id] => 7
> [nome] => Estacionar o veículo em
> desacordo com as condições regulamentadas especificamente pela
> sinalização.
> [pontuacao] => 3
> [Multa] => Array
> (
> [id] => 1
> [veiculo_id] => 6
> [infracao_id] => 7
> [data] => 2009-10-22
> [local] => u ghg
> )
> )
> Vou simular via php um "SUM" (vendo quando ocorrências tem no array de
> infracao) acho que o jeito.
> On 4 nov, 16:07, Desenvolvimento SiscoJ <siscoj... @gmail.com> wrote:
>> Por acaso isso resultou em uma query montada de forma correta?
>> Só por desencargo....
>> att.
>> 2009/11/4 Celso <cels... @gmail.com>:
>> > Desculpem a falta de mais detalhes, mas acho que descobri um BUG no
>> > containable:
>> > ***Funciona (sem "sum")
>> > $this->Proprietario->Behaviors->attach('Containable');
>> > $this->Proprietario->find('all', array(
>> > 'contain'=>array(
>> > 'Veiculo' => array(
>> > 'Infracao' => array (
>> > 'fields' => array('(Infracao.id) as
>> > pontos')
>> > )
>> > )
>> > ),
>> > )
>> > );
>> > ***Não funciona (com "sum"):
>> > $this->Proprietario->Behaviors->attach('Containable');
>> > $this->Proprietario->find('all', array(
>> > 'contain'=>array(
>> > 'Veiculo' => array(
>> > 'Infracao' => array (
>> > 'fields' => array('sum(Infracao.id) as
>> > pontos')
>> > )
>> > )
>> > ),
>> > )
>> > );
>> > Neste segundo caso ele meio que ignora o "$useTable" e dá o erro:
>> > Notice (8): Undefined index: Infracaos [CORE\cake\libs\model
>> > \datasources\dbo_source.php, line 1012]
>> > ***Não é a primeira vez que tenho problemas com campos calculados no
>> > CAKE...
>> > On 4 nov, 13:42, Mauro Thiago <maurothi... @gmail.com> wrote:
>> >> Creio que esteja faltando campos no Proprietário, pois ambas as tables
>> >> necessitam do campos para trabalhar.
>> >> A Table Proprietário necessita de um campo como FK (chave estrageira) para
>> >> receber o id da Pessoa Fisica / Juridica e Id do Veiculo.
>> >> Thiago
>> >> 2009/11/4 Gabriel Gilini <gabr... @usosim.com.br>
>> >> > 2009/11/4 Celso <cels... @gmail.com>:
>> >> > > *Olá Galera!
>> >> > > *Estou com esse modelo:
>> >> > >http://picasaweb.google.com.br/celsowm/Screenshots#5399915797002091778
>> >> > > *E preciso recuperar isto:
>> >> > > Proprietario.nome , Veiculo.placa , sum (Infracoes.pontuacao) as
>> >> > > pontos
>> >> > > Proprietario "hasMany" Veiculo
>> >> > > Veiculo "habBelongsToMany" Infracoes
>> >> > E Multa?
>> >> > > *Queria algo assim:
>> >> > > SELECT Veiculo.placa, Proprietario.nome, sum(Infracao.pontuacao) as
>> >> > > pontos FROM proprietarios AS Proprietario
>> >> > > LEFT JOIN veiculos AS Veiculo ON (Veiculo.proprietario_id =
>> >> > > Proprietario.id)
>> >> > > LEFT JOIN multas AS Multa ON (Multa.veiculo_id = Veiculo.id)
>> >> > > LEFT JOIN infracoes AS Infracao ON (Infracao.id = Multa.infracao_id
>> >> > OK
>> >> > > *Eu tentei várias coisa como cointainable e recursive, mas parece que
>> >> > > a única solução será montar os joins no array
>> >> > E qual o problema? Você não mostrou *o que deu errado* nem *o que você
>> >> > tá fazendo*.
>> >> > --
>> >> > Gabriel Gilini
>> >> >www.usosim.com.br
>> >> > gabr... @usosim.com.br
É necessário
Acessar antes de postar mensagens.
Você não tem a permissão necessária para postar.
De:
Edinei Luis Cipriani <phpedi... @gmail.com>
Data: Wed, 4 Nov 2009 19:22:32 -0200
Local: Qua 4 nov 2009 19:22
Assunto: Re: [CakePHP-Tuga] Re: Find em Multiplos Modelos com campo calculado
Pq não faz veiculos_ifracoes ?
Em 04/11/2009, às 19:10, Desenvolvimento SiscoJ escreveu:
> putz... deu minha hora...
> veja se isso ajuda:
> http://osdir.com/ml/CakePHP/2009-10/msg00000.html
> parece q o cake nao adiciona o atributo no model....
> ae tem q seguir esse caminho:
> http://teknoid.wordpress.com/2008/09/29/dealing-with-calculated-field...
> att.
> 2009/11/4 Celso <cels... @gmail.com>:
>> ele montou essas querys sem erros:
>> SELECT `Proprietario`.`id`, `Proprietario`.`nome`,
>> `Proprietario`.`endereco`, `Proprietario`.`email`,
>> `Proprietario`.`idade` FROM `proprietarios` AS `Proprietario` WHERE 1
>> = 1
>> SELECT `Veiculo`.`id`, `Veiculo`.`placa`, `Veiculo`.`proprietario_id`
>> FROM `veiculos` AS `Veiculo` WHERE `Veiculo`.`proprietario_id` IN (1,
>> 3, 5, 6, 7, 9, 10, 13, 15, 16, 17, 18, 19, 25, 26, 27, 36, 42, 43,
>> 44,
>> 45, 46, 48, 51, 55, 56, 57, 58, 59, 60, 61, 62, 63, 65, 66, 67, 68,
>> 69, 70)ra...
>> SELECT sum(pontuacao) as pontos, `Multa`.`id`, `Multa`.`veiculo_id`,
>> `Multa`.`infracao_id`, `Multa`.`data`, `Multa`.`local` FROM
>> `infracoes` AS `Infracao` JOIN `multas` AS `Multa` ON
>> (`Multa`.`veiculo_id` IN (4, 6, 8, 11, 13, 15, 20, 21) AND
>> `Multa`.`infracao_id` = `Infracao`.`id`) WHERE 1 = 1
>> **Quando eu tiro os fields, eu consigo um array assim:
>> Array
>> (
>> [0] => Array
>> (
>> [id] => 6
>> [placa] => GAY-2424
>> [proprietario_id] => 1
>> [Infracao] => Array
>> (
>> [0] => Array
>> (
>> [id] => 7
>> [nome] => Estacionar o veículo em
>> desacordo com as condições regulamentadas especificamente pela
>> sinalização.
>> [pontuacao] => 3
>> [Multa] => Array
>> (
>> [id] => 1
>> [veiculo_id] => 6
>> [infracao_id] => 7
>> [data] => 2009-10-22
>> [local] => u ghg
>> )
>> )
>> Vou simular via php um "SUM" (vendo quando ocorrências tem no array
>> de
>> infracao) acho que o jeito.
>> On 4 nov, 16:07, Desenvolvimento SiscoJ <siscoj... @gmail.com> wrote:
>>> Por acaso isso resultou em uma query montada de forma correta?
>>> Só por desencargo....
>>> att.
>>> 2009/11/4 Celso <cels... @gmail.com>:
>>>> Desculpem a falta de mais detalhes, mas acho que descobri um BUG no
>>>> containable:
>>>> ***Funciona (sem "sum")
>>>> $this->Proprietario->Behaviors->attach('Containable');
>>>> $this->Proprietario->find('all', array(
>>>> 'contain'=>array(
>>>> 'Veiculo' => array(
>>>> 'Infracao' => array (
>>>> 'fields' => array('(Infracao.id) as
>>>> pontos')
>>>> )
>>>> )
>>>> ),
>>>> )
>>>> );
>>>> ***Não funciona (com "sum"):
>>>> $this->Proprietario->Behaviors->attach('Containable');
>>>> $this->Proprietario->find('all', array(
>>>> 'contain'=>array(
>>>> 'Veiculo' => array(
>>>> 'Infracao' => array (
>>>> 'fields' => array('sum(Infracao.id) as
>>>> pontos')
>>>> )
>>>> )
>>>> ),
>>>> )
>>>> );
>>>> Neste segundo caso ele meio que ignora o "$useTable" e dá o erro:
>>>> Notice (8): Undefined index: Infracaos [CORE\cake\libs\model
>>>> \datasources\dbo_source.php, line 1012]
>>>> ***Não é a primeira vez que tenho problemas com campos calculados
>>>> no
>>>> CAKE...
>>>> On 4 nov, 13:42, Mauro Thiago <maurothi... @gmail.com> wrote:
>>>>> Creio que esteja faltando campos no Proprietário, pois ambas as
>>>>> tables
>>>>> necessitam do campos para trabalhar.
>>>>> A Table Proprietário necessita de um campo como FK (chave
>>>>> estrageira) para
>>>>> receber o id da Pessoa Fisica / Juridica e Id do Veiculo.
>>>>> Thiago
>>>>> 2009/11/4 Gabriel Gilini <gabr... @usosim.com.br>
>>>>>> 2009/11/4 Celso <cels... @gmail.com>:
>>>>>>> *Olá Galera!
>>>>>>> *Estou com esse modelo:
>>>>>>> http://picasaweb.google.com.br/celsowm/Screenshots#5399915797002091778
>>>>>>> *E preciso recuperar isto:
>>>>>>> Proprietario.nome , Veiculo.placa , sum
>>>>>>> (Infracoes.pontuacao) as
>>>>>>> pontos
>>>>>>> Proprietario "hasMany" Veiculo
>>>>>>> Veiculo "habBelongsToMany" Infracoes
>>>>>> E Multa?
>>>>>>> *Queria algo assim:
>>>>>>> SELECT Veiculo.placa, Proprietario.nome,
>>>>>>> sum(Infracao.pontuacao) as
>>>>>>> pontos FROM proprietarios AS Proprietario
>>>>>>> LEFT JOIN veiculos AS Veiculo ON (Veiculo.proprietario_id =
>>>>>>> Proprietario.id)
>>>>>>> LEFT JOIN multas AS Multa ON (Multa.veiculo_id = Veiculo.id)
>>>>>>> LEFT JOIN infracoes AS Infracao ON (Infracao.id =
>>>>>>> Multa.infracao_id
>>>>>> OK
>>>>>>> *Eu tentei várias coisa como cointainable e recursive, mas
>>>>>>> parece que
>>>>>>> a única solução será montar os joins no array
>>>>>> E qual o problema? Você não mostrou *o que deu errado* nem *o
>>>>>> que você
>>>>>> tá fazendo*.
>>>>>> --
>>>>>> Gabriel Gilini
>>>>>> www.usosim.com.br
>>>>>> gabr... @usosim.com.br
É necessário
Acessar antes de postar mensagens.
Você não tem a permissão necessária para postar.