2012-04-10 7 views
1

既存のオブジェクト(取得または新規作成)がいくつかの基準と一致するかどうかをPropelに問い合わせる最善の方法は何でしょうか。 Propelがこれを行う固有の能力を持っているのだろうかと思う:-)私は簡単な方法について尋ねている。以下のような 理想的なものは:基準オブジェクトのみSQLクエリを生成するために使用され、オブジェクトと一致するわけではないのでPropel:条件を満たすために既存のオブジェクトをテストする

$fruit = FruitPeer::doSelectOne(new Criteria); // get whatever fruit 

    $crit1 = new Criteria; 
    $crit1->add(FruitPeer::REF_COLOR, 'green');  // criteria for green fruits 

    if ($fruit->matches($crit1)) {     // check if my fruit is green 
     echo 'My fruit is green'; 
    } 

答えて

1

これは、些細な方法では不可能です。ただし、データベースに再度照会するだけで済みます。 Propelのインスタンスプールは、照会されたオブジェクトのインスタンスがすでに存在することを検出すると、すべてのデータを再度取得することを避けるべきです。

0

おそらく最も簡単なことは、主キーに条件を追加してカウントを発行することです。

クエリ(代わりにプレーンCriteriaインスタンスのModelCriteriaインスタンス)をお持ちの場合は、1行で行うことができます。

if($critQuery1->filterByPrimaryKey($fruit->getPrimaryKey())->count() > 0) {…} 
関連する問題