sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo convertir esta declaración de MySQL a Symfony Propel?

Propel no tiene un estándar forma de hacer subconsultas como parte de un criterio.

Puede separar su consulta (obtener el valor con el que desea comparar primero y luego usarlo en la consulta original) o usar un CUSTOM criterios con su subconsulta en su consulta propel.

He aquí un ejemplo de la segunda opción:

$c = new Criteria();

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

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

EDITAR: Aquí hay un ejemplo de la primera opción

// 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)

El único problema con esta opción es que estás haciendo dos consultas en lugar de uno, lo que puede afectar su rendimiento, pero depende de su aplicación, por supuesto.