sql >> データベース >  >> RDS >> Mysql

このMySQLステートメントをsymfonyPropelに変換する方法は?

    Propelには標準がありません 基準の一部としてサブクエリを実行する方法。

    クエリを分離するか(最初に比較する値を取得してから、元のクエリに使用する)、またはCUSTOMを使用することができます。 推進クエリのサブクエリの基準。

    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)
    

    このオプションの唯一の問題は、2つのクエリを実行していることです。 1つではなく、パフォーマンスに影響を与える可能性がありますが、もちろんアプリケーションによって異なります。




    1. MySQLDockerコンテナが新しいイメージにデータを保存していません

    2. 主キーと外部キーのインデックス

    3. MySQLで破損したInnoDBテーブルを修復するための最良の方法

    4. SQLDROPTABLEステートメントとさまざまなユースケース