Nano Hash - криптовалюты, майнинг, программирование

Ошибка Symfony 2.1: импортировать @ORM\Table в репозиторий

Я обновляю приложение с 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)
    {
        // ...
    }
}

Спасибо


  • У вас есть use Doctrine\ORM\Mapping as ORM вверху? 05.04.2013
  • В объекте (который использует этот класс репозитория) да, а в репозитории нет. Я не импортирую orm\mapping ни в один репозиторий 05.04.2013
  • Если вы используете аннотацию @ORM, то, насколько я знаю, вы должны импортировать задание на сопоставление. 05.04.2013
  • Я использую его в прослушивателе на kernel.request, может быть, он вызывается раньше, чем должен быть? 08.04.2013

Ответы:


1

Это была ошибка PHP в версиях до 5.3.8. Из системных требований 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.

26.09.2013

2

У меня была такая же проблема сегодня. решение, после некоторого поиска в Google, по-видимому, должно включать блок комментариев перед определением класса Repository.

в твоем случае:

/**
 * AlertesRepository 
 */
class AlertesRepository extends EntityRepository
{
  ...
}

без этого блока комментариев вы получите бессмысленную ошибку о "@ORM\Table". еще одна странность Symfony/Doctrine >_>

21.08.2013
  • Да, это работает! Я решил это несколько месяцев назад, добавив использование ORM\Mapping в класс репо, но я предпочитаю это решение. Тем не менее я не знаю, почему я получаю эту ошибку: S 23.08.2013

  • 3

    Похоже, вы забыли добавить оператор use.

    <?php
    
    namespace Acme\MyBundle\Entity;
    
    // Remember to include this use statement
    use Doctrine\ORM\Mapping as ORM;
    
    /**
     * My Entity
     *
     * @ORM\Table()
     * @ORM\Entity(repositoryClass="Acme\MyBundle\Entity\MyEntityRepository")
     */
    class MyEntity
    {
    }
    
    10.07.2013

    4

    Для меня это происходит только с некоторыми версиями PHP, и решение состояло в том, чтобы поместить класс репозитория в папку над папкой класса сущности.

    23.08.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..