0

ドキュメントと別のスタックオーバーフローの投稿を読んで、2、3 列のデータのみを返したい場合、教義の正しい方法はパーシャルを使用することだと思いました。(これは読み取り専用クエリです)。

ただし、以下のコードは、私が特定した 3 列ではなく、100 列すべてを返します。誰かが理由を説明できますか?

ありがとう、マニシャ

public function showAction(Request $request)
{
    if ($request->getMethod() == 'GET') {
        $id = $request->get('locationid');
        $kfType = $request->get('type');
        $em = $this->getDoctrine()
                    ->getManager();

        $data = $em->createQueryBuilder()
                    ->select ( array( 'partial d.{id, locationid, kfFyp}' ))
                    ->from('DashDataBundle:Data',  'd')
                    ->where('d.locationid = :locationid')
                    ->setParameter('locationid', $id)
                    ->setMaxResults(100)
                    ->getQuery()
                    ->getResult();
    }
4

1 に答える 1

0

このクエリは、多くのフィールドを持つドクトリン エンティティを返します。しかし、partialキーワードを使用すると、このフィールドは空になります。指定されたフィールドのみにデータが入力されます。

オブジェクトをハイドレートしたくない場合は、指定すれば単純な配列でデータを取得できます

->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY)
于 2013-08-02T05:12:28.120 に答える