sql >> Databasteknik >  >> RDS >> Mysql

Hur konverterar man denna MySQL-sats till symfony Propel?

Propel har ingen standard sätt att göra delfrågor som en del av ett kriterium.

Du kan antingen separera din fråga (skaffa värdet du vill jämföra mot först och sedan använda den i den ursprungliga frågan) eller använda en CUSTOM kriterier med din underfråga i din framdrivningsfråga.

Här är ett exempel på det andra alternativet:

$c = new Criteria();

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

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

EDIT: Här är ett exempel på det första alternativet

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

Det enda problemet med det här alternativet är att du gör två frågor istället för en, vilket kan påverka din prestation, men det beror förstås på din applikation.




  1. Ansluta till en Oracle-databas med SQLAlchemy

  2. Upptar kolumnerna char / varchar / text / longtext i MySQL full storlek i filsystemet även för delvis fyllda celler?

  3. Hur GREATEST() fungerar i MariaDB

  4. mysql räknas endast för distinkta värden i den förenade frågan