2009-12-31 6 views

Répondre

4

Vous ne pouvez pas créer une requête de regroupement à l'aide de critères. Au lieu de cela, vous pouvez utiliser create the SQL string yourself et l'utiliser pour hydrater les objets. Si vous souhaitez toujours utiliser des critères pour générer les deux parties de la requête d'union, vous pouvez appeler BasePeer::createSelectSql(Criteria $criteria, array &$params). Cela renverra une chaîne SQL avec ? dans les emplacements des valeurs qui doivent être définies par la couche PDO. Le second paramètre est un tableau qui sera rempli avec ces paramètres (c'est pourquoi vous le passez par référence). Vous pouvez passer à la fonction PDOStatement::execute(array $params).

+0

Pouvez-vous mettre à jour le lien? Cela ne fonctionne pas –

+0

@NeelBasu: Le lien m'a transmis à la nouvelle adresse, je l'ai mis à jour. –

+0

Le lien est à nouveau cassé (parce que le wiki est cassé) mais le texte [peut encore être trouvé ici] (http://trac.propelorm.org/browser/branches/1.4/docs/guide/03-Basic-CRUD. SMS). [La version pour la version actuelle (1.6) peut être trouvée ici] (http://trac.propelorm.org/browser/branches/1.6/docs/guide/03-Basic-CRUD.txt). – Ladadadada

1

Deux solutions me viennent à l'esprit. Premièrement, l'approche triviale consiste à exécuter deux appels distincts, puis à utiliser array_merge pour les assembler. Selon votre cas d'utilisation, cela peut ne pas être aussi coûteux que vous le pensez. De même, si vous êtes en train de rédiger la requête, écrivez une vue avec la requête que vous voulez, et mettez-la dans votre modèle Propel. J'avais un tas d'écrans de détails de maître très compliqués dans Propel/symfony 1.x, et cette approche a fonctionné un régal. Cela va légèrement contre la philosophie d'utiliser un ORM, mais bon, c'est amusant de casser les règles de temps en temps! :)