-1

リポジトリにいくつかのクエリを構築するためにSymfony2とDQLを使用してアプリケーションを開発しています。コントローラに次のコードがあります:

$emGalPak = $this->getDoctrine()->getEntityManager();
  $OsatugabeKop = $emGalPak->getRepository('AnotatzaileaAnotatzaileaBundle:GalderaPaketea')
                             ->getOsatugabeKop(); 

これは、上記のエンティティに対応するリポジトリに作成したクエリです。

<?php

namespace Anotatzailea\AnotatzaileaBundle\Repository;

use Doctrine\ORM\EntityRepository;

/**
 * GalderaPaketeaRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class GalderaPaketeaRepository extends EntityRepository
{
    public function getOsatugabeKop()
    {
        $qb = $this->createQueryBuilder('c')
                   ->select('c')
                   ->where('c.Osatua = 0')
        $Emaitza = $qb->getQuery()->getResult();

                return sizeof($Emaitza);

    }

}

コードを実行すると、次のエラーが表示されます。

Parse error: syntax error, unexpected T_VARIABLE in /var/www/Symfony/src/Anotatzailea/AnotatzaileaBundle/Repository/GalderaPaketeaRepository.php on line 20

このエラーを解決する方法について何かアイデアはありますか?

4

2 に答える 2

2

これは、クエリが機能しないこととは関係ありません。

「解析エラー」が表示された場合は、PHP コード自体が不適切にフォーマットされており、PHP エンジンが解析も実行もできないことを意味します。

この特定のケースでは、クエリ ビルダーを作成する式の末尾にセミコロンがありません。

public function getOsatugabeKop()
{
    $qb = $this->createQueryBuilder('c')
               ->select('c')
               ->where('c.Osatua = 0'); // <--- right there
    $Emaitza = $qb->getQuery()->getResult();

    return sizeof($Emaitza);
}

unexpected T_VARIABLEほとんどの場合、エラーが発生するのは、セミコロンを省略し、パーサーがそうすべきだと考える前に変数に遭遇したためです。空白を取り除くと、間違いが見やすくなります。

// Bad Code, two lines
$now = time()
$one = 1;

// Bad Code, one line
$now = time()$one = 1;
// ----------^  Pretty obvious now that a semicolon is missing
// And that a variable was encountered unexpectedly

乾杯

于 2012-05-10T18:10:41.627 に答える
0

行の後にセミコロンがありませんwhere

于 2012-05-10T18:11:07.523 に答える