Yii Framework Forum: Ajudinha Na Consulta - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Ajudinha Na Consulta Rate Topic: -----

#1 User is offline   Edson Rodrigues 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 378
  • Joined: 10-August 10

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.
0

#2 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 821
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

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.
Newerton Vargas de Araújo
0

#3 User is offline   Edson Rodrigues 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 378
  • Joined: 10-August 10

Posted 17 May 2013 - 09:23 AM

View PostNewerton, 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.


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
0

#4 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 821
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 17 May 2013 - 08:16 PM

Edson,

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
0

#5 User is offline   Edson Rodrigues 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 378
  • Joined: 10-August 10

Posted 17 May 2013 - 09:50 PM

View PostNewerton, on 17 May 2013 - 08:16 PM, said:

Edson,

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...
0

#6 User is offline   Wanderson 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 78
  • Joined: 20-February 09
  • Location:Rio de Janeiro, Brazil

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);



0

#7 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 821
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 20 May 2013 - 07:23 AM

View PostEdson 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...

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
0

#8 User is offline   Edson Rodrigues 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 378
  • Joined: 10-August 10

Posted 22 May 2013 - 01:26 PM

View PostNewerton, on 20 May 2013 - 07:23 AM, said:

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?


Resolvido obrigado
0

#9 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 821
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 22 May 2013 - 01:36 PM

View PostEdson Rodrigues, on 22 May 2013 - 01:26 PM, said:

Resolvido obrigado


Qual era o problema?
Newerton Vargas de Araújo
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users