我是zend 2和Doctrine 2的新手。我试图创建一个实体类,但得到以下消息:
致命错误:未捕获的异常 带有消息的'Doctrine \ Common \ Annotations \ AnnotationException' '[语义错误]注释“@Doctrine \ ORM \ Mapping \ jobId”in 属性Workers \ Entity \ Jobsought :: $ jobId不存在,或者不能存在 自动加载
以下是实体类
namespace Workers\Entity;
use Doctrine\ORM\Mapping as ORM;
use Zend\InputFilter\InputFilter;
use Zend\InputFilter\Factory as InputFactory;
use Zend\InputFilter\InputFilterAwareInterface;
use Zend\InputFilter\InputFilterInterface;
/**
*
*
* @ORM\Entity
* @ORM\Table(name="worker_main_jobsort")
* @property int $jobId
*/
class Jobsought implements InputFilterAwareInterface
{
protected $inputFilter;
/**
* @ORM\jobId
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $jobId;
/**
* Magic getter to expose protected properties.
*
* @param string $property
* @return mixed
*/
public function __get($property)
{
return $this->$property;
}
/**
* Magic setter to save protected properties.
*
* @param string $property
* @param mixed $value
*/
public function __set($property, $value)
{
$this->$property = $value;
}
}
为什么ORM无法映射它的任何想法?该表存在于我的数据库中。
答案 0 :(得分:0)
刚刚开始使用这两者中的两个 - 但我想我知道你的问题是什么。
首先,你不能在不使用@ignore指令的情况下尝试指定任何“奇怪的”(根据教义奇怪的)注释。
其次,我认为你试图用@property int $jobId
说"$jobId"
是你的PK?当你说@ORM\GeneratedValue(strategy="AUTO")
时,你已经这样做了,告诉学说把jobid映射成你的PK。另外,我在某处读到将name="job_id"
添加到@Column
注释中是一种很好的做法,但请不要引用我的话。猜猜它并不重要。
希望这有帮助!
编辑 -
我的不好,也错过了你需要删除@ORM\jobId
,因为它不是一个有效的学说注释(jobId)。只需将其指定为@ORM\Id
即可。