3

アプリケーションを Symfony 2.0 から Symfony 2.1 にアップグレードしています。このcache:clearアップグレード ファイルに従いましたが、いくつかのリポジトリを使用しているときにエラーが発生した後を除いて、すべて正常に動作します。エラーは次のとおりです。

[Semantical Error] The annotation "@ORM\Table" in class 
edasiclinic\AlertesBundle\Repository\AlertesRepository was never imported. Did you maybe
forget to add a "use" statement for this annotation?

これは一例です。他のリポジトリでこのエラーが発生します。@ORM\Table注釈を使用しない場合、リポジトリ ファイル内にインポートする必要がある理由がわかりません。

また、〜10秒待ってからブラウザを更新すると、機能します...

編集

これはエンティティです:

<?php

namespace edasiclinic\DatabaseBundle\Entity;

use Doctrine\ORM\Mapping as ORM;


/**
 * edasiclinic\DatabaseBundle\Entity\Alertes
 *
 * @ORM\Table(name="alertes")
 * @ORM\Entity(repositoryClass="edasiclinic\AlertesBundle\Repository\AlertesRepository")
 * @ORM\HasLifecycleCallbacks()
 */
class Alertes
{
    /**
     * @var integer $id
     *
     * @ORM\Id
     * @ORM\Column(name="idAlerta", type="integer")
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    ...
}

そして、これはリポジトリクラスです:

<?php

namespace edasiclinic\AlertesBundle\Repository;

use Doctrine\ORM\EntityRepository;
use edasiclinic\DasiBundle\Funcions\AES;


class AlertesRepository extends EntityRepository
{

    public function countUnread($user, $idioma, $fus)
    {
        // ...
    }
}

ありがとう

4

4 に答える 4

3

今日もまったく同じ問題がありました。グーグルで調べた後の解決策は、リポジトリクラス定義の前にコメントブロックを含めることです。

あなたの場合:

/**
 * AlertesRepository
 */
クラス AlertesRepository は EntityRepository を拡張します
{
  ...
}

そのコメント ブロックがないと、"@ORM\Table" に関する無意味なエラーが表示されます。さらに別の Symfony/Doctrine の奇妙な点 >_>

于 2013-08-21T17:47:41.253 に答える
1

5.3.8 より前のバージョンでは PHP のバグでした。symfonyのシステム要件から:

$this->addRecommendation(
    version_compare($installedPhpVersion, '5.3.8', '>='),
    'When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156',
    'Install PHP 5.3.8 or newer if your project uses annotations.'
);

PHP バージョン 5.3.8以上にアップグレードできない場合の詳細と考えられる回避策については、PHP バグ #55156を参照してください。

于 2013-09-26T18:56:52.130 に答える
0

私にとっては、PHPの特定のバージョンでのみ発生し、解決策は、リポジトリクラスをエンティティクラスのフォルダーの上のフォルダーに配置することでした

于 2013-08-23T06:57:17.867 に答える