Duas tabelas no formulario

Olá Pessoal!

Vocês podem me ajudar?

Tenho duas tabelas:




create table tabela_01

(

id_catalogo bigserial NOT NULL primary key,

id_empresa bigint references tabela_02,

obs character varying(255)

);






create table tabela_02

(

id_empresa bigserial NOT NULL primary key,

cnpj character varying(14),

empresa character varying(50)

);



[color="#0000FF"]Vou inserir informação no formulário referente a tabela_01[/color]

Meu formulário esta assim :


		<?php echo $form->labelEx($model,'id_empresa'); ?>

		<?php echo $form->dropDownList($model,'id_empresa', CHtml::listData(Empresas::model()->findAll(), 'id_empresa', 'empresa')); ?>

		<?php echo $form->error($model,'id_empresa'); ?>

Exemplo:

Id Empresa: [color="#FF0000"][DropDownList com relação de nomes das empresas][/color]

Como fazer para ficar assim? :

Id Empresa: [color="#FF0000"][DropDownList com relação de nomes das empresas + CNPJ ][/color]

Obrigado!

Vc pode fazer um loop no resultado da pesquisa e criar um array na mão, ao inves de usar o CHtml::listData.

Meu Prezado, obrigado pela resposta, mas estou aprendendo agora sobre php… Você pode descrever um exemplo para que eu possa usar?

Grato,




<?php

   $dados  = array();

   foreach (Empresas::model()->findAll() as $row)

     $dados[$row->id_empresa] = $row->empresa.' - '. $row->cnpj;

?>


<?php echo $form->labelEx($model,'id_empresa'); ?>

<?php echo $form->dropDownList($model,'id_empresa',  $dados); ?>

<?php echo $form->error($model,'id_empresa'); ?>



Cara, Muito Obrigado!

Funcionou perfeitamente.

Rapaz… esses detalhes fazem a diferença.

Amigo, estou precisando de outra ajuda sua.

Na grade gerada pelo Gii, gostaria de fazer como na imagem em anexo.

Há essa possibilidade?

1804

Erro Yii - Grade.png




$this->widget('zii.widgets.grid.CGridView', array(

        'dataProvider'=>$model->search(),

        'columns'=>array(

   			'coluna1',

   			'coluna2',

   			array(

                        'name'=>'colunas concatenadas',

                        'value'=>'$data->coluna4 . $data->coluna5',

                ),

            ),

));



Daniel, funcionou perfeitamente também, mas o nome da Empresa está em outra tabela, tipo como no ‘dropDownList’.

Na tabela Itens(É a grade gerada pelo Gii) tem um campo: id_empresa

Na tabela Empresa tem os campos: id_empresa, empresa

Você sabe fazer para concatenar para aparecer o nome da empresa que tem por referencia o código?

Aproveitando… Ultima pergunta e te deixo em paz - rsrsrs

Para aparecer o campo de filtro na grade, tenho que declarar algo no model? Se sim, você tem um exemplo?

[color="#FF0000"]Mil obrigados![/color]

Ops!

Agora só a resposta sobre os filtros abaixo dos títulos da grade…

Funcionou assim:


<?php

$this->widget('zii.widgets.grid.CGridView', array(

        'dataProvider'=>$model->search(),

        'columns'=>array(

                        'id_item',

                        array(

                        'name'=>'colunas concatenadas',

                        'value'=>'$data->id_empresa . " - " . $data->patrimonio',

                        ),

                        array(

                        'name'=>'colunas concatenadas2',

                        'value'=>'Empresas::Model()->FindByPk($data->id_empresa)->empresa',

                        ),

		        'id_objeto',

		        'patrimonio',

		          array(

			     'class'=>'CButtonColumn',

		          ),

            ),

));

?>

Pra exibir o valor de uma tabela relacionada, da uma olhada aqui

http://www.yiiframework.com/doc/api/1.1/CGridView

Olha a segunda coluna do segundo exemplo.

O filtro não me lembro, mas aqui no forum em pt mesmo tem essa resposta num tópico mais antigo… não lembro qual, mas tenho certeza que ví