Php 如何在symfony2中将三个条令查询转换为一个条令查询

Php 如何在symfony2中将三个条令查询转换为一个条令查询,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我在我的控制器里做这件事 $C100 = $em->getRepository('AcmeJunkieBundle:Junk')->findBy(array('type'=> 'C100'),array('day' => 'ASC')); $C200 = $em->getRepository('AcmeJunkieBundle:Junk')->findBy(array('type'=> 'C200'),array('day' => 'ASC'));

我在我的控制器里做这件事

$C100 = $em->getRepository('AcmeJunkieBundle:Junk')->findBy(array('type'=> 'C100'),array('day' => 'ASC'));
$C200 = $em->getRepository('AcmeJunkieBundle:Junk')->findBy(array('type'=> 'C200'),array('day' => 'ASC'));
$C300 = $em->getRepository('AcmeJunkieBundle:Junk')->findBy(array('type'=> 'C300'),array('day' => 'ASC'));
“type”只是字符串字段

有没有什么方法可以在单个查询中实现这一点,然后执行类似的操作

$C100 = $result['C100']
$C200 = $result['C200']
$C300 = $result['C200']

我们需要了解您的
垃圾
实体:
类型
只是一个字符串字段吗

无论如何,您可以在关联的存储库类中编写自己的存储库方法:您的
垃圾
类源代码如下:

src/Acme/JunkieBundle/Entity/Junk.php

namespace Acme\JunkieBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="Acme\JunkieBundle\Repository\JunkRepository")
 * @ORM\Table(name="junk")
 */

class Junkie{ ... }
namespace Acme\JunkieBundle\Repository;

use Doctrine\ORM\EntityRepository;

class JunkRepository extends EntityRepository
{

    public function findByTypes(array $types)
    {

        //we build our query here           
        $qb = $this -> createQueryBuilder();

        $query = $qb -> where( $qb -> expr() -> in ('type', $types) )
        -> getQuery();

        return $query -> getResults();

    }


}
确保您有一个带有存储库类名的注释,然后编写该类-由控制器中的
$C100=$em->getRepository()
方法获取的类

src/Acme/junkebundle/Repository/JunkRepository.php

namespace Acme\JunkieBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="Acme\JunkieBundle\Repository\JunkRepository")
 * @ORM\Table(name="junk")
 */

class Junkie{ ... }
namespace Acme\JunkieBundle\Repository;

use Doctrine\ORM\EntityRepository;

class JunkRepository extends EntityRepository
{

    public function findByTypes(array $types)
    {

        //we build our query here           
        $qb = $this -> createQueryBuilder();

        $query = $qb -> where( $qb -> expr() -> in ('type', $types) )
        -> getQuery();

        return $query -> getResults();

    }


}
现在你可以打电话了

$em->getRepository('AcmeJunkieBundle:Junk')->findByTypes(array('C100', 'C200', 'C300'))
在你的控制器里

请务必检查文档。

您只需执行以下操作:

$em->getRepository('AcmeJunkieBundle:Junk')
   ->findBy(array('type'=> array('C100', 'C200', 'C300')),array('day' => 'ASC'));
)()谢谢