Doctrine ORM Criteria - 动态orX

时间:2014-05-29 13:54:19

标签: php orm doctrine-orm doctrine criteria

我花了很长时间,但找不到合适的解决方案。 如何修改下面的代码,以便我可以使用可变数量的动态包含条件?

$criteria = Criteria::create();
$expr = Criteria::expr();

$criteria->where(
            $expr->orX(
                    $expr->contains('field1', $str),
                    $expr->contains('field2', $str),
                    $expr->contains('field3', $str),
                    $expr->contains('field4', $str)
            )
    );

2 个答案:

答案 0 :(得分:4)

你可以像这样动态地调用它:

$criteria = new Criteria();
$expr = array();
$expr[] = $criteria->expr()->eq(/** what you want */);
$expr[] = $criteria->expr()->contains(/** what you want */);
$criteria->where(call_user_func_array(array( $criteria->expr(), 'orX' ),$expr));

答案 1 :(得分:-1)

您可以使用此方法:

$criteria->where(Criteria::expr()->eq('active', 'true'));