Page 1 of 1
Ajudinha Na Consulta
#1
Posted 16 May 2013 - 04:00 PM
Olá Pessoal,
Eu tenho uma tabela de Obras e Fotos, o caso é que quero filtrar somente as Obras que tenham fotos cadastradas.
Alguém poderia me ajuda tem como fazem isso no findAll.
Agradeço.
Eu tenho uma tabela de Obras e Fotos, o caso é que quero filtrar somente as Obras que tenham fotos cadastradas.
Alguém poderia me ajuda tem como fazem isso no findAll.
Agradeço.
#2
Posted 17 May 2013 - 09:07 AM
Edson,
As Fotos estão cadastradas na mesma tabela, ou em outra tabela?
Se for na mesma tabela é fácil, usa-se o 'condition' e 'params' dentro do findAll().
Se estiver em outra tabela, vai precisar criar uma relacionamento no seu model, e usar a função with(), assim ele retorna somente as Obras que conter fotos.
As Fotos estão cadastradas na mesma tabela, ou em outra tabela?
Se for na mesma tabela é fácil, usa-se o 'condition' e 'params' dentro do findAll().
Se estiver em outra tabela, vai precisar criar uma relacionamento no seu model, e usar a função with(), assim ele retorna somente as Obras que conter fotos.
Newerton Vargas de Araújo
--
http://newerton.com.br/
https://linkedin.com/in/newerton
https://github.com/newerton/
--
Por favor, para saber que você ficou satisfeito com a resposta, clicar no botão de
(Vote Up)
--
http://newerton.com.br/
https://linkedin.com/in/newerton
https://github.com/newerton/
--
Por favor, para saber que você ficou satisfeito com a resposta, clicar no botão de

#3
Posted 17 May 2013 - 09:23 AM
Newerton, on 17 May 2013 - 09:07 AM, said:
Edson,
As Fotos estão cadastradas na mesma tabela, ou em outra tabela?
Se for na mesma tabela é fácil, usa-se o 'condition' e 'params' dentro do findAll().
Se estiver em outra tabela, vai precisar criar uma relacionamento no seu model, e usar a função with(), assim ele retorna somente as Obras que conter fotos.
As Fotos estão cadastradas na mesma tabela, ou em outra tabela?
Se for na mesma tabela é fácil, usa-se o 'condition' e 'params' dentro do findAll().
Se estiver em outra tabela, vai precisar criar uma relacionamento no seu model, e usar a função with(), assim ele retorna somente as Obras que conter fotos.
Blz Newerton,
Então estou fazendo isso
'obras'=> Obra::model()->with('fotos')->findAll(array('condition'=>'t.status = 1','order'=>'rand()')),
Tem uma tabela fotos onde gravo as fotos da obra.
no model obra tem uma relação foto:
'fotos' => array(self::HAS_MANY, 'Foto', 'idobra'),
Só que continua retornando obra sem foto...onde eu corrijo isso.
Valew
#4
Posted 17 May 2013 - 08:16 PM
Edson,
Sabe a quantidade de Obras com fotos?
Faz um teste assim
Se contabilizar as obras sem fotos, adicionar together no relacionamento.
Sabe a quantidade de Obras com fotos?
Faz um teste assim
$model = Obra::model()->with('fotos')->findAll(array('condition'=>'t.status = 1','order'=>'rand()')); echo count($model);
Se contabilizar as obras sem fotos, adicionar together no relacionamento.
'fotos' => array(self::HAS_MANY, 'Foto', 'idobra', 'together' => true),
Newerton Vargas de Araújo
--
http://newerton.com.br/
https://linkedin.com/in/newerton
https://github.com/newerton/
--
Por favor, para saber que você ficou satisfeito com a resposta, clicar no botão de
(Vote Up)
--
http://newerton.com.br/
https://linkedin.com/in/newerton
https://github.com/newerton/
--
Por favor, para saber que você ficou satisfeito com a resposta, clicar no botão de

#5
Posted 17 May 2013 - 09:50 PM
Newerton, on 17 May 2013 - 08:16 PM, said:
Edson,
Sabe a quantidade de Obras com fotos?
Faz um teste assim
Se contabilizar as obras sem fotos, adicionar together no relacionamento.
Sabe a quantidade de Obras com fotos?
Faz um teste assim
$model = Obra::model()->with('fotos')->findAll(array('condition'=>'t.status = 1','order'=>'rand()')); echo count($model);
Se contabilizar as obras sem fotos, adicionar together no relacionamento.
'fotos' => array(self::HAS_MANY, 'Foto', 'idobra', 'together' => true),
Então tem 14 obras cadastras no total e 1 obra sem fotos cadastradas, e quando eu dou o count retorna 14.
Sendo que o correto neste caso deveria retornar 13.
Fiz o que falou, coloquei together no relacionamento mas continua retornando as 14.
o que será que esta errado?
valew...
#6
Posted 19 May 2013 - 09:53 AM
Tenta usar isso:
$criteria=new CDbCriteria; $criteria->compare('status',1); $criteria->together = true; $criteria->with = array( 'fotos'=>array('joinType'=>'INNER JOIN'), ); $model = Obra::model()->findAll($criteria); echo count($model);
#7
Posted 20 May 2013 - 07:23 AM
Edson Rodrigues, on 17 May 2013 - 09:50 PM, said:
Então tem 14 obras cadastras no total e 1 obra sem fotos cadastradas, e quando eu dou o count retorna 14.
Sendo que o correto neste caso deveria retornar 13.
Fiz o que falou, coloquei together no relacionamento mas continua retornando as 14.
o que será que esta errado?
valew...
Sendo que o correto neste caso deveria retornar 13.
Fiz o que falou, coloquei together no relacionamento mas continua retornando as 14.
o que será que esta errado?
valew...
Edson,
Verifica no banco de dados se tem alguma tupla para a Obra que não contêm imagem.
Que tipo de campo é o status? int, set, enum?
Newerton Vargas de Araújo
--
http://newerton.com.br/
https://linkedin.com/in/newerton
https://github.com/newerton/
--
Por favor, para saber que você ficou satisfeito com a resposta, clicar no botão de
(Vote Up)
--
http://newerton.com.br/
https://linkedin.com/in/newerton
https://github.com/newerton/
--
Por favor, para saber que você ficou satisfeito com a resposta, clicar no botão de

#9
Posted 22 May 2013 - 01:36 PM
Newerton Vargas de Araújo
--
http://newerton.com.br/
https://linkedin.com/in/newerton
https://github.com/newerton/
--
Por favor, para saber que você ficou satisfeito com a resposta, clicar no botão de
(Vote Up)
--
http://newerton.com.br/
https://linkedin.com/in/newerton
https://github.com/newerton/
--
Por favor, para saber que você ficou satisfeito com a resposta, clicar no botão de

Share this topic:
Page 1 of 1