Yii Framework Forum: Adicionar Attribute No Activerecord - Yii Framework Forum

Jump to content

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

Adicionar Attribute No Activerecord Rate Topic: -----

#1 User is offline   Fabio Jr. Policeno 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 133
  • Joined: 05-April 11

Posted 13 August 2013 - 01:40 PM

Estou tentando adicionar um atributo extra na minha model, mas sem sucesso.

Adicionei a model o atributo:

...
public $extraAttr;
...


e no safe, em rules
...
array('extraAttr', 'safe'),
...


Mesmo assim, este atributo nao aparece em:
$model->attributes


Só consigo acessá-lo pelo:
$model->extraAttr


Mas preciso ter acesso a ele pelo aattributes da model. Como fazer?

Obrigado!
0

#2 User is offline   Wanderson 

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

Posted 13 August 2013 - 02:05 PM

Você precisa reescrever o método "getAttributes" no seu modelo


public function getAttributes($names=true)
{
    $attributes = parent::getAttributes($names=true);
    $attributes['seu_atributo'] = 'UM_VALOR_QUALQUER';
    return $attributes;
}


2

#3 User is offline   Fabio Jr. Policeno 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 133
  • Joined: 05-April 11

Posted 13 August 2013 - 02:11 PM

View PostWanderson, on 13 August 2013 - 02:05 PM, said:

Você precisa reescrever o método "getAttributes" no seu modelo


public function getAttributes($names=true)
{
    $attributes = parent::getAttributes($names=true);
    $attributes['seu_atributo'] = 'UM_VALOR_QUALQUER';
    return $attributes;
}



Uma boa opcao, mas se alguem tiver algo mais nativo ...

Obrigado!
0

#4 User is offline   Railton Nepomuceno 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 04-May 10
  • Location:Manaus

Posted 15 August 2013 - 10:37 AM

Fabio

Basta adicionar uma linha no metodo attributeLabels() com o atributo que você quer adicionar no model, o resto você fez certo, não precisa reescrever metodos.

'digi_codigo' => 'Digi Codigo',

Apos isso pode criar varias rules pra esse atributo.
Railton Nepomuceno
0

#5 User is offline   Fabio Jr. Policeno 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 133
  • Joined: 05-April 11

Posted 15 August 2013 - 11:55 AM

View PostRailton Nepomuceno, on 15 August 2013 - 10:37 AM, said:

Fabio

Basta adicionar uma linha no metodo attributeLabels() com o atributo que você quer adicionar no model, o resto você fez certo, não precisa reescrever metodos.

'digi_codigo' => 'Digi Codigo',

Apos isso pode criar varias rules pra esse atributo.

Obrigado Railton, mas isso nao funcionou.
0

#6 User is offline   Railton Nepomuceno 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 04-May 10
  • Location:Manaus

Posted 15 August 2013 - 05:13 PM

Verdade, testei aqui.

View PostFabio Jr. Policeno, on 15 August 2013 - 11:55 AM, said:

Obrigado Railton, mas isso nao funcionou.

Railton Nepomuceno
0

#7 User is offline   Wanderson 

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

Posted 19 August 2013 - 11:56 AM

View PostFabio Jr. Policeno, on 13 August 2013 - 02:11 PM, said:

Uma boa opcao, mas se alguem tiver algo mais nativo ...

Obrigado!


Não existe outra forma. O método getAttributes retorna todas as colunas da tabela no banco de dados, se você quiser informações adicionais terá que reescrever este método. É por isso que seu modelo herda da classe CActiveRecord, para você adapta-lo da forma que lhe convém. Em outras palavras, use orientação a objetos (POLIMORFISMO neste caso).
1

#8 User is offline   Fabio Jr. Policeno 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 133
  • Joined: 05-April 11

Posted 19 August 2013 - 12:00 PM

View PostWanderson, on 19 August 2013 - 11:56 AM, said:

Não existe outra forma. O método getAttributes retorna todas as colunas da tabela no banco de dados, se você quiser informações adicionais terá que reescrever este método. É por isso que seu modelo herda da classe CActiveRecord, para você adapta-lo da forma que lhe convém. Em outras palavras, use orientação a objetos (POLIMORFISMO neste caso).


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