Yii Framework Forum: Ajuda Com Criteria (Union) - Yii Framework Forum

Jump to content

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

Ajuda Com Criteria (Union) Ajuda com Criteria (Union) Rate Topic: -----

#1 User is offline   vgeorgo 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 7
  • Joined: 26-December 12
  • Location:Brazil

Posted 31 January 2013 - 11:55 AM

Estou querendo saber qual seria a melhor forma de resolver meu problema, estou conseguindo montar um $criteria, mas estava precisando de algo a mais e não sei como fazer.

Tenho uma tabela de Física('individual') e essas físicas podem ter vínculo com uma Jurídica('corporation'). Estou fazendo a Seguinte criteria:

$now = date('Y-m-d H:i:s');
            
$criteria->together = true;
$criteria->select = 'person_full_name';
	$criteria->with = array(
		'individual'=> array(
                'select' => 'individual_registry',
		'joinType' => 'INNER JOIN',
		'with' => array(
                        'linkCorporationIndividuals' => array(
                            'select' => '',
                            'on' => "start_date_link <= '$now' AND end_date_link >= '$now'",
                            'joinType' => 'LEFT JOIN',
                            'with' => array(
                                'idCorporation' => array(
                                    'select' => '',
                                    'joinType' => 'LEFT JOIN',
                                    'with' => array(
                                        'idPerson' => array(
                                            'select' => 'person_full_name',
                                            'on' => "idPerson.status = 'A'",
                                            'joinType' => 'LEFT JOIN',
                                        ),
                                    ),
                                ),
                            ),
                        ),
		),
	),
);


Esse criteria está trazendo o resultado esperado(trazendo todas as minha pessoas Físicas e duplicando o registro caso elas tenham vínculo com mais de uma empresa e vindo em branco caso não tenham)

O meu problema é que eu quero que além de aparecer o registro com o vínculo, gostaria que aparecesse o registro sem ele também. Ex.:

Física Jurídica
Victor ------------
Victor Teste
Victor Teste2
Alfredo ------------

Nesse caso mesmo se Victor tiver um vínculo, ainda vai mostrar uma linha vazia o que eu acho que dá para ser feito com o UNION, no qual eu uniria o criteria mencionado (alterando os LEFT para INNER JOIN) e uniria o resultado de uma pesquisa simples na tabela de Física, que me traria os registros que eu estou precisando.

Ai que vem o problema, não sei como realizar o UNION. Usei uma função chamada mergeWith() do criteria, mas não apareceu UNION nenhum.

Alguém aí tem alguma idéia?
0

#2 User is offline   yigor 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 14-February 13
  • Location:Brazil

Posted 15 February 2013 - 11:22 PM

Olá, seguinte, para vc fazer um union vc tem que fazer um criteria, depois o outro com a outra tabela ou consulta que vc quer unificar, e ae sim unir as duas com o mergeWith, fica algo semelhante a isto.

$criteria = new CDbCriteria;
$criteria->addCondition('t.id = :id1');
$criteria->params = array(':id1' => 1);

$criteria2 = new CDbCriteria;
$criteria2->addCondition('t.id = :id2');
$criteria2->params = array(':id2' => 2);

$criteria2->mergeWith($criteria1, false);

Model_name::model()->findAll($criteria2);

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