Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie konvertiere ich diese MySQL-Anweisung in Symfony Propel?

Propel hat keinen Standard Möglichkeit, Unterabfragen als Teil eines Kriteriums durchzuführen.

Sie können Ihre Abfrage entweder trennen (erhalten Sie zuerst den Wert, mit dem Sie vergleichen möchten, und verwenden Sie ihn dann in der ursprünglichen Abfrage) oder verwenden Sie einen CUSTOM Kriterien mit Ihrer Unterabfrage in Ihrer Antriebsabfrage.

Hier ist ein Beispiel für die zweite Option:

$c = new Criteria();

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

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

BEARBEITEN: Hier ist ein Beispiel für die erste Option

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

Das einzige Problem bei dieser Option ist, dass Sie zwei Abfragen durchführen anstelle von einem, was sich auf Ihre Leistung auswirken kann, aber natürlich von Ihrer Anwendung abhängt.