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实例),您可以在一行中执行此操作:

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