Propel:测试现有对象以匹配条件

时间:2012-04-10 15:08:52

标签: php orm criteria propel

要求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';
    }

2 个答案:

答案 0 :(得分:1)

这是不可能的,因为Criteria对象仅用于生成SQL查询而不用于匹配对象。但是,您可以再次查询数据库。 Propel的实例池应该避免在检测到已查询对象的实例已经存在时再次检索所有数据。

答案 1 :(得分:0)

您可以做的最简单的事情是在主键上添加一个条件然后发出计数。

如果您有查询(ModelCriteria实例而不是普通Criteria实例),可以在一行中执行此操作:

if($critQuery1->filterByPrimaryKey($fruit->getPrimaryKey())->count() > 0) {…}