【问题标题】:Propel: test existing object for matching the criteriaPropel:测试现有对象是否符合条件
【发布时间】:2012-04-10 15:08:52
【问题描述】:

让 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';
    }

【问题讨论】:

    标签: php orm criteria propel


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2010-10-20
        • 1970-01-01
        • 1970-01-01
        • 2011-02-11
        • 2021-02-16
        • 1970-01-01
        • 1970-01-01
        • 2021-04-21
        相关资源
        最近更新 更多