Snippets tagged "propel"
Symfony, trier aléatoirement les résultat avec Propel et MySQL
Attention, cela ne fonctionnera probablement qu'avec MySQL :
<?php $c = new criteria; $c->addAscendingOrderByColumn('rand()'); $results = TotoPeer::doSelect($c);
[Symfony 1.1 beta] Créer un test unitaire et initialiser Propel
Depuis l'apparition du nouveau système de configuration de Symfony 1.1, voici un boostrap type pour vos tests unitaires nécessitant l'accès à l'environnement Propel :
<?php require_once(dirname(__FILE__).'/../../config/ProjectConfiguration.class.php'); $configuration = ProjectConfiguration::getApplicationConfiguration('main', 'test', true); include($configuration->getSymfonyLibDir().'/vendor/lime/lime.php'); sfContext::createInstance($configuration);
Pensez cependant à remplacer main par le nom de votre application courante (par ex. frontend).
[Symfony] [Propel] Afficher la dernière requête effectuée
Pour afficher la dernière requête effectuée avec Propel :
echo Propel::getConnection()->getLastExecutedQuery();
C'est tout con, hein ?
Gérer les libellés et tris d'un selectbox avec Propel et les helpers objets Symfony
Pour gérer un joli combobox avec des valeurs textuelles représentatives choisies pour un objet Propel et éventuellement les trier, on peut faire :
<?php echo object_select_tag($produit, 'getTypeProduitId', array ( 'related_class' => 'TypeProduit', 'peer_method' => 'doSelectOrderByCode', )) ?>
ou bien dans un generator.yml
fields:
departement_id:
params: text_method=getNomCode peer_method=doSelectOrderByCode
[Symfony] Cacher un objet Propel sérialisé
Peut être utile pour les gros objets couteux et utilisés souvent.
$key = md5('myPropelObjectKey'); $cache = new sfProcessCache(); if ($cache->has($key)) { $obj = unserialize($cache->get($key)); } else { $obj = Table::doSelect(); $cache->set($key, serialize($obj)) }
[Symfony] Traiter les OR sql avec Propel
Voici comment gérer les "ou" SQL dans Propel :
$criteria = new Criteria(); $criteria->add(TotoPeer::NAME, 'Gérard Bouchard'); $criterion = $criteria->getNewCriterion ( TotoPeer::ID, 5 )->addOr($criteria->getNewCriterion ( TotoPeer::ID, 10 )); $criteria->addAnd($criterion); TotoPeer::doSelect($criteria);
Ceci donnera quelque chose comme :
SELECT * FROM toto WHERE toto.NAME = 'Gérard Bouchard' AND ( toto.ID = 5 OR toto.ID = 10 );
[Symfony] Executer une requête spécifique (custom query) avec Propel
$con = Propel::getConnection(); $stmt = $con->prepareStatement('SELECT foo, bar FROM baz WHERE name=? AND active=?'); $stmt->setString(1, 'MyName'); $stmt->setString(2, '1'); $rs = $stmt->executeQuery(ResultSet::FETCHMODE_NUM);
Ou encore plus con :
Propel::getConnection()->executeUpdate('SET FOREIGN_KEY_CHECKS=0');
