学说 findBy 或语句

Jur*_*jka 5 php doctrine symfony

我的教义findBy方法有问题。我知道在教义上该怎么做

SELECT * FROM Y WHERE Z = 1 OR Z = 2 OR Z = 3
Run Code Online (Sandbox Code Playgroud)

但我不知道该怎么做

SELECT * FROM Y WHERE Z = 10 OR Y = 10 OR X = 10
Run Code Online (Sandbox Code Playgroud)

我要补充一点,我不想这样做是QueryBuilder的,只有这样: findBy(array(1=> "aaa"))。是否可以?

你好!

Tom*_*uba 3

您可以在这里找到答案。

具体说明您的用例:

$queryBuilder = $em->getRepository('YourEntityClassName')
    ->createQueryBuilder('c');

$result = $queryBuilder->select('c')
    ->where($queryBuilder->expr()->orX(
        $queryBuilder->expr()->eq('c.x', ':value'),
        $queryBuilder->expr()->eq('c.y', ':value'),
        $queryBuilder->expr()->eq('c.z', ':value')
    ))
    ->setParameter('value', 10)
    ->getQuery()
    ->getResult();
Run Code Online (Sandbox Code Playgroud)

或者简单:

$queryBuilder = $em->getRepository('YourEntityClassName')
    ->createQueryBuilder('c');

$result = $queryBuilder->select('c')
    ->where('c.x = :value or c.y = :value or c.z = :value')
    ->setParameter(':value', 10)
    ->getQuery()
    ->getResult()
Run Code Online (Sandbox Code Playgroud)

$queryBuilder->expr()此处只是为了防止拼写错误并使您的代码更加面向未来,因为它包含在方法中。


正如@CedarfindBy()指出的那样,通过 Criteria是可能的,但很困难并且没有很好的记录。