-1

私は自分のコントローラーでこれをやっています

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

「タイプ」は単なる文字列フィールドです

単一のクエリでそれを行い、次のようなことを行う方法はありますか

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

2 に答える 2

1

あなたはただ行うことができます:

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

;) ありがとう

于 2012-08-22T05:43:00.700 に答える
1

あなたのJunkエンティティについて知る必要があります:type単なる文字列フィールドですか?

とにかく、関連するリポジトリ クラスに独自のリポジトリ メソッドを記述できます。Junkクラス ソースは次のようになります。

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{ ... }

リポジトリ クラス名の注釈があることを確認してから、そのクラス ($C100 = $em->getRepository()コントローラーのメソッドによってフェッチされるクラス) を書き留めます。

src/Acme/JunkieBundle/リポジトリ/JunkRepository.php

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'))

あなたのコントローラーで。

Doctrine のドキュメントを確認してください。

于 2012-08-22T03:19:51.687 に答える