Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como converter esta instrução MySQL para o symfony Propel?


O Propel não tem um padrão maneira de fazer subconsultas como parte de um critério.

Você pode separar sua consulta (obter o valor com o qual deseja comparar primeiro e depois usá-lo na consulta original) ou usar um CUSTOM critérios com sua subconsulta em sua consulta de propulsão.

Veja um exemplo da segunda opção:
$c = new Criteria();

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

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

EDITAR: Aqui está um exemplo da primeira opção
// 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)

O único problema com esta opção é que você está fazendo duas consultas em vez de um, o que pode afetar seu desempenho, mas depende da sua aplicação, claro.