Mysql
 sql >> Database >  >> RDS >> Mysql

Come convertire questa istruzione MySQL in symfony Propel?

Propel non ha uno standard modo di eseguire le sottoquery come parte di un criterio.

Puoi separare la tua query (ottenere prima il valore con cui vuoi confrontare e quindi utilizzarlo nella query originale) o utilizzare un CUSTOM criteri con la tua sottoquery nella tua query propel.

Ecco un esempio della seconda opzione:

$c = new Criteria();

$subSelect = "cart.category > (
  SELECT cart.category
  FROM carts
  WHERE carts.id = 3)";

$c->add(CartPeer::CATEGORY, $subSelect, Criteria::CUSTOM);

MODIFICA: Ecco un esempio della prima opzione

// find the object we want to compare against
$c = new Criteria();
$c->add(CartPeer::ID, 3); 
$cart = CartPeer::doSelectOne($c)

// then make the actual criteria
$c = new Criteria();
$c->add(CartPeer::CATEGORY, $cart->getCategory(), Criteria::GREATER_THAN)

L'unico problema con questa opzione è che stai facendo due query invece di uno, che potrebbe influire sulle tue prestazioni, ma ovviamente dipende dalla tua applicazione.