Yii Framework Forum: Relacionamento Na Função Search() - Yii Framework Forum

Jump to content

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

Relacionamento Na Função Search() Rate Topic: -----

#1 User is offline   Lucas de Abreu 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 5
  • Joined: 03-January 13

Posted 03 January 2013 - 09:55 PM

Pelo o número de meus posts da para perceber que sou novo por aqui :) .

Vamos la!

Estas são minhas tabelas :
create table IF NOT EXISTS cadastro (
    id              int         not null primary key auto_increment,
    descricao       varchar(50) not null
);
create table IF NOT EXISTS situacao (
    id              int         not null primary key auto_increment,
    descricao       varchar(50) not null
);
create table IF NOT EXISTS cadastro_situacao (
    id              int         not null primary key auto_increment,
    cadastro_id     int         not null,
    situacao_id     int         not null,
    foreign key (cadastro_id) references cadastro (id),
    foreign key (situacao_id) references situacao (id)
);
create table IF NOT EXISTS empresa (
    id              int         not null primary key auto_increment,
    razao_social    varchar(100) not null,
    cnpj            varchar(14) not null unique,
    telefone        varchar(14),
    email           varchar(100),
    cadastro_situacao_id int not null,
    foreign key (cadastro_situacao_id) references cadastro_situacao (id)
);


Para cada cadastro tera suas situações, ex: empresa->[ativo, inativo], patrimonio->[em uso, manutençao]

Oque eu quero é na visualizão das empresas na view empresa/admin.php, ao invés de apresentar o id do cadastroSituacao, apresentar a descricao da situacao.

Oque já tentei:
public function search()
{
	$criteria=new CDbCriteria;
		
	$criteria->compare('t.id',$this->id);
	$criteria->compare('razao_social',$this->razao_social,true);
	$criteria->compare('cnpj',$this->cnpj,true);
	$criteria->compare('telefone',$this->telefone,true);
	$criteria->compare('email',$this->email,true);
	//$criteria->compare('cadastro_situacao_id',$this->cadastro_situacao_id);
		
	$criteria->compare('cadastroSituacao.situacao.descricao',$this->cadastroSituacao->situacao->id, true);

	$criteria->with=array('cadastroSituacao');
		
	return new CActiveDataProvider($this, array(
		'criteria'=>$criteria,
	));
}


O erro ocorre nesta linha:
  $criteria->compare('cadastroSituacao.situacao.descricao',$this->cadastroSituacao->situacao->id, true);


O erro:
  Trying to get property of non-object 


Alguem poderia me ajudar?
0

#2 User is offline   Lucas de Abreu 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 5
  • Joined: 03-January 13

Posted 04 January 2013 - 04:10 PM

Ninguem?
0

#3 User is offline   Allan Freitas 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 38
  • Joined: 08-November 12
  • Location:Guarapari-ES - Brazil

Posted 06 January 2013 - 10:15 PM

Olá. lembrando sempre que for has_many, tem que ser assim:

$empresa->cadastroSituacao->"situacoes"


seria um array de situacoes e não apenas um objeto "situacao".

Poderia postar seus models? Fica mais facil ajudar.

Tradução do Erro
"Trying to get property of non-object" = Tentando pegar uma propriedade de um não-objeto.
0

#4 User is offline   Lucas de Abreu 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 5
  • Joined: 03-January 13

Posted 07 January 2013 - 02:56 PM

View PostAllan Freitas, on 06 January 2013 - 10:15 PM, said:

Olá. lembrando sempre que for has_many, tem que ser assim:

$empresa->cadastroSituacao->"situacoes"


seria um array de situacoes e não apenas um objeto "situacao".

Poderia postar seus models? Fica mais facil ajudar.

Tradução do Erro
"Trying to get property of non-object" = Tentando pegar uma propriedade de um não-objeto.


Obrigado pela resposta!

Estou postando apenas a parte das relações para não ficar grande...

class Empresa extends CActiveRecord
{
        public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
			'departamentos' => array(self::HAS_MANY, 'Departamento', 'empresa_id'),
			'cadastroSituacao' => array(self::BELONGS_TO, 'CadastroSituacao', 'cadastro_situacao_id'),
		);
	}
}


class CadastroSituacao extends CActiveRecord
{
	public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
			'cadastro' => array(self::BELONGS_TO, 'Cadastro', 'cadastro_id'),
			'situacao' => array(self::BELONGS_TO, 'Situacao', 'situacao_id'),
		);
	}
}

class Situacao extends CActiveRecord
{
	public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
			'cadastroSituacaos' => array(self::HAS_MANY, 'CadastroSituacao', 'situacao_id'),
		);
	}
}


ficaria algo assim?

$criteria->compare('cadastro_situacao_id', $this->cadastroSituacao->situacao[$this->cadastroSituacao->situacao_id]);

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