Я пытаюсь использовать Symfony 2.6/Doctrine 2 на Ubuntu 14.04 с php5.5.9/mysql5.5. Но я получаю очень странную ошибку и не нашел никакого решения.Аннотации доктрины пытаются загрузить автозагрузку неправильной аннотации
Я создаю очень простой объект с командой doctrine:generate:entity
. Все в порядке. Но когда я пытаюсь создать таблицу с doctrine:schema:update
команды я получаю невозможное, чтобы исправить ошибку :)
[Doctrine\Common\Annotations\AnnotationException]
[Semantical Error] The annotation "@Doctrine\ORM\Mapping\I" in property AppBundle\Entity\Language::$id does not exist, or could not be auto-loaded.
Ну, на самом деле это правильно. Нет ничего такого @Doctrine\ORM\Mapping\I
.
Это все о @ORM\Id
. Когда я меняю @ORM\Id
, ошибка также изменяется. Я изменяю его на @ORM\Hello
, ошибка изменяется как @Doctrine\ORM\Mapping\Hello
. Но когда я меняю его на @ORM\Isthisreal
, ошибка стоит на месте, как @Doctrine\ORM\Mapping\I
.
У меня есть некоторая ошибка синтаксического анализа чувствительности к регистру. Но не мог найти никакого разрешения. Я много пробовал, но ничего не меняется. Вот мое простое лицо:
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Language
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="AppBundle\Entity\LanguageRepository")
*/
class Language
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var boolean
*
* @ORM\Column(name="is_active", type="boolean")
*/
private $isActive;
/**
* @var string
*
* @ORM\Column(name="iso", type="string", length=2)
*/
private $iso;
/**
* Get id
*
* @return integer
*/
public function getid()
{
return $this->id;
}
/**
* Set isActive
*
* @param boolean $isActive
* @return Language
*/
public function setisActive($isActive)
{
$this->isActive = $isActive;
return $this;
}
/**
* Get isActive
*
* @return boolean
*/
public function getisActive()
{
return $this->isActive;
}
/**
* Set iso
*
* @param string $iso
* @return Language
*/
public function setiso($iso)
{
$this->iso = $iso;
return $this;
}
/**
* Get iso
*
* @return string
*/
public function getiso()
{
return $this->iso;
}
}
ли очистить кэш? –
Вы также можете попытаться импортировать именно класс Id с помощью 'use Doctrine \ ORM \ Mapping \ Id' и использовать' @ Id' в аннотации. –
Также вы можете попытаться поместить '@ORM \ Id' перед аннотацией' @ORM \ Column'. Может быть, это поможет. –