March 2008

Limpando o cache sem precisar usar linha de comando (symfony cc)

Podemos limpar o cache do symfony sem precisar usar a linha de comando. Isso é útil pois alguns servidores não dão acesso para linha de comando (cli).


  // apaga todo o conteúdo do cache/
  sfToolkit::clearGlob(sfConfig::get(‘sf_root_cache_dir’));
  // apaga o conteúdo do cache/frontend
  sfToolkit::clearGlob(sfConfig::get(‘sf_root_cache_dir’).‘/frontend’);

PS: Isso só funcionou, pelo menos comigo, em servidor linux. No windows essa função não fez nada.

cache
php
symfony

Comments (2)

Permalink

Symsony sync funcionando no windows (How to get rsync working on windows)

Depois de ter instalado o rsync para windows (http://trac.symfony-project.com/wiki/SymfonySyncOnWindows) e te-lo no PATH, vai ser preciso fazer uma alteração em um arquivo do symfony.

Edite o arquivo data/symfony/tasks/sfPakeEnvironment.php e troque a linha

echo pake_sh($cmd);

por

echo pake_sh(‘start cmd /k ‘.$cmd);

Esse problema foi mencionado aqui: http://www.symfony-project.org/forum/index.php/m/40902/

php
symfony

Comments (0)

Permalink

Criteria para pegar emails duplicados

Visto que temos uma tabela clientes, com o campo email e queremos pegar os emails duplicados e listá-los.


  $c = new Criteria();
  $c->clearSelectColumns();
  $c->addSelectColumn(ClientePeer::EMAIL);
  $c->addGroupByColumn(ClientePeer::EMAIL);
  $c->addAsColumn(‘numduplicados’, ‘COUNT(’.ClientePeer::EMAIL.‘)’);
  $c>addHaving($c>getNewCriterion(ClientePeer::EMAIL, COUNT>1’, Criteria::CUSTOM));
  $c->addDescendingOrderByColumn(COUNT);
  $rs = ClientePeer::doSelectRS($c);

  while ($rs->next()) {

     $duplicados[$rs>get(1)] = $rs>get(2);
  }

  • Pronto, você tem um array $duplicados[“email”] = quantidade

criteria
php
symfony

Comments (0)

Permalink

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.

php
symfony

Comments (0)

Permalink