Propel には、基準の一部としてサブクエリを実行する標準的な方法がありません。
クエリを分離する (最初に比較したい値を取得し、それを元のクエリで使用する) かCUSTOM
、propel クエリでサブクエリで基準を使用することができます。
2 番目のオプションの例を次に示します。
$c = new Criteria();
$subSelect = "cart.category > (
SELECT cart.category
FROM carts
WHERE carts.id = 3)";
$c->add(CartPeer::CATEGORY, $subSelect, Criteria::CUSTOM);
編集:これは最初のオプションの例です
// 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)
このオプションの唯一の問題は、1 つではなく2 つのクエリを作成していることです。これはパフォーマンスに影響を与える可能性がありますが、もちろんアプリケーションによって異なります。