学说findBy或声明

时间:2015-10-26 14:00:58

标签: php symfony doctrine

我的学说findBy方法存在问题。我知道如何做到学说

SELECT * FROM Y WHERE Z = 1 OR Z = 2 OR Z = 3

但我不知道该怎么做

SELECT * FROM Y WHERE Z = 10 OR Y = 10 OR X = 10

我必须补充一点,我不想在querybuilder中这样做,只有这样: findBy(array(1=> "aaa"))。有可能吗?

问候!

1 个答案:

答案 0 :(得分:2)

您可以找到answer here

具体说明您的用例:

$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();

或简单:

$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()

$queryBuilder->expr()此处仅用于防止打字错误并使您的代码更具未来性,因为它包含在方法中。

@Cedar所指出的那样,findBy()通过标准可能会有困难而且记录不充分。