sql >> Databáze >  >> RDS >> Mysql

Jak převést tento příkaz MySQL na symfony Propel?

Propel nemá standard způsob provádění dílčích dotazů jako součást kritérií.

Dotaz můžete buď oddělit (nejprve získat hodnotu, se kterou chcete porovnat, a poté ji použít v původním dotazu), nebo použít CUSTOM kritéria s vaším dílčím dotazem ve vašem propel dotazu.

Zde je příklad druhé možnosti:

$c = new Criteria();

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

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

UPRAVIT: Zde je příklad první možnosti

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

Jediný problém s touto možností je, že zadáváte dva dotazy místo jednoho, což může mít dopad na váš výkon, ale záleží samozřejmě na vaší aplikaci.




  1. DateDiff pro výstup v hodinách a minutách

  2. Jak mohu zastavit skript Postgres, když narazí na chybu?

  3. PŘIDAT SLOUPEK MySQL

  4. Jak zřetězit řetězce v SQL