Como setar um atributo virtual de um CActiveRecord utilizando o método setAttributes()?

15 views
Skip to first unread message

Blackmage

unread,
Mar 11, 2014, 1:40:33 PM3/11/14
to yii-framew...@googlegroups.com
Existe alguma forma de eu setar um atributo de um activeRecord que não representa um atributo do banco de dados utilizando o método setAttributes?
Por exemplo
Eu tenho uma tabela de clientes onde existe a coluna idCidade.
Na tabela Cidade existe a coluna idEstado.

No meu formulário de clientes eu tenho um dropDown com a lista de Estados, em que depois que um estado é selecionado o dropDown de Cidades é carregado por ajax. O problema é que quando ocorre algum erro de validação, atualmente estou perdendo a informação do estado previamente selecionado.
Eu ja tentei criar o atributo idEstado no activeRecord de clientes, mas quando o método setAttributes só seta os atributos que representam colunas no banco de dados.

Queria saber se existe alguma forma transparente de guardar essa informação sem ter que criar uma coluna de idEstado na minha tabela de clientes ou sem ter que setar explicitamente o idEstado do cliente com um $cliente->idEstado = x.

Desde já agradeço à todos

Lukz'Strife

unread,
Mar 11, 2014, 2:56:52 PM3/11/14
to yii-framew...@googlegroups.com
Tente adicionar uma regra de validação do tipo safe ou integer para o seu atributo idestado

array('idestado','safe');

o método setattributes apenas define valor para atributos que tem uma regra de validação definida, pois entende que apenas esses receberão entrada do usuário.


--
YFB - Yii Framework Brasil
04/2011: Anexos de até 250kb foram autorizados pelos membros da lista. Use com moderação.
---
You received this message because you are subscribed to the Google Groups "YFB - Yii Framework Brasil" group.
To unsubscribe from this group and stop receiving emails from it, send an email to yii-framework-br...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/yii-framework-brasil/02032614-7bea-4b3d-b657-efe527acd04f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Blackmage

unread,
Mar 11, 2014, 4:29:28 PM3/11/14
to yii-framew...@googlegroups.com
Solved ;)
Valeu LuKz'Strife! O problema era esse mesmo


Em terça-feira, 11 de março de 2014 15h56min52s UTC-3, LuKz'Strife escreveu:
Tente adicionar uma regra de validação do tipo safe ou integer para o seu atributo idestado

array('idestado','safe');

o método setattributes apenas define valor para atributos que tem uma regra de validação definida, pois entende que apenas esses receberão entrada do usuário.
Em 11 de março de 2014 14:40, Blackmage <alan.bl...@gmail.com> escreveu:
Existe alguma forma de eu setar um atributo de um activeRecord que não representa um atributo do banco de dados utilizando o método setAttributes?
Por exemplo
Eu tenho uma tabela de clientes onde existe a coluna idCidade.
Na tabela Cidade existe a coluna idEstado.

No meu formulário de clientes eu tenho um dropDown com a lista de Estados, em que depois que um estado é selecionado o dropDown de Cidades é carregado por ajax. O problema é que quando ocorre algum erro de validação, atualmente estou perdendo a informação do estado previamente selecionado.
Eu ja tentei criar o atributo idEstado no activeRecord de clientes, mas quando o método setAttributes só seta os atributos que representam colunas no banco de dados.

Queria saber se existe alguma forma transparente de guardar essa informação sem ter que criar uma coluna de idEstado na minha tabela de clientes ou sem ter que setar explicitamente o idEstado do cliente com um $cliente->idEstado = x.

Desde já agradeço à todos

--
YFB - Yii Framework Brasil
04/2011: Anexos de até 250kb foram autorizados pelos membros da lista. Use com moderação.
---
You received this message because you are subscribed to the Google Groups "YFB - Yii Framework Brasil" group.
To unsubscribe from this group and stop receiving emails from it, send an email to yii-framework-brasil+unsub...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages