Simulando coluna do banco com YML

Olá!

Vou mostrar aqui uma maneira de nós criarmos uma coluna no banco que servirá como várias colunas.

schema.yml


propel:
  usuario:
    _attribute:          { phpName: Usuario }
    id:
    nome:               varchar(50)
    sobrenome:          varchar(50)
    atributos:          longvarchar

Então, se alguma hora precisarmos criar algum campo a mais nesta tabela, podemos utilizar o campo atributos para isso.
Suponhamos que preciso criar um campo ESTADO.

lib/model/Usuario.php


  public function getEstado() {
        $yml_loaded = sfYaml::load($this->getAtributos());

        if (!(isset($yml_loaded[‘estado’]))) {
        $yml_loaded[‘estado’] = ‘’;
        }
        return $yml_loaded["estado"];
  }

  public function setEstado($valor) {
    $yml_loaded = sfYaml::load($this->getAtributos());
    $yml_loaded[‘estado’] = $valor;
    $yml = sfYaml::dump($yml_loaded);
    $this->setAtributos($yml);
  }

Desse jeito, teremos o valor do estado armazenado na coluna atributos do banco.
Na minha opinião é mais fácil criar esses métodos do que ficar alterando colunas do banco, porém o tipo de campo será sempre string.