1

Propelに既存のオブジェクト(取得または新しく作成された)がいくつかの基準に一致するかどうかを確認するように依頼する最良の方法は何でしょうか. 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';
    }
4

2 に答える 2

1

Criteria オブジェクトは SQL クエリの生成にのみ使用され、オブジェクトの照合には使用されないため、これは単純な方法では不可能です。ただし、データベースを再度クエリすることはできます。Propel のインスタンス プールは、クエリされたオブジェクトのインスタンスが既に存在することを検出した場合、すべてのデータを再度取得することを避ける必要があります。

于 2012-04-10T15:35:22.350 に答える
0

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

クエリ (ModelCriteriaプレーンCriteriaインスタンスではなくインスタンス) がある場合は、これを 1 行で実行できます。

if($critQuery1->filterByPrimaryKey($fruit->getPrimaryKey())->count() > 0) {…}
于 2016-04-29T09:59:33.517 に答える