这是第二次尝试,首先是symfony 2 doctrine relation onetoone
Adres
<?php
/**
* Created by PhpStorm.
* User: grek
* Date: 18.12.13
* Time: 16:33
*/
namespace Miejsce\ObiektyBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class Adres {
/**
* @var integer
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=64, nullable=true)
*/
public $street;
/**
* @ORM\OneToOne(targetEntity="Miejsce\ObiektyBundle\Entity\User") */
private $user;
}
用户
<?php
/**
* Created by PhpStorm.
* User: grek
* Date: 18.12.13
* Time: 16:33
*/
namespace Miejsce\ObiektyBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class User {
/**
* @var integer
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=64, nullable=true)
*/
public $name;
/**
* @ORM\OneToOne(targetEntity="Miejsce\ObiektyBundle\Entity\Adres")
*/
private $adres;
}
并拥有:php app / console doctrine:schema:update --force
php app / console doctrine:schema:update --force
[学说\共同\注解\ AnnotationException]
[语义错误]属性Miejsce \ ObiektyBundle \ Entity \ Adres :: $ user中的注释“@Doctrine \ ORM \ Mapping”不是e
xist,或无法自动加载
那我可以有错误?
答案 0 :(得分:3)
答案在错误消息中。看看你们两个班级之间有什么不同。
/**
* @Entity
*/
Vs:
/**
* @ORM\Entity
*/
所以更新那个给你错误的那个。
修改强>
使用use Doctrine\ORM\Mapping as ORM;
导入Doctrine的注释时,您需要使用@ORM\
启动所有这些注释。注释阅读器将知道@ORM\Entity
实际上意味着@Doctrine\ORM\Mapping\Entity
,这是定义该注释的类。
答案 1 :(得分:2)
我不确定我是否完全理解您的要求,但您的注释设置不正确。
/**
* @Entity
应该成为
/**
* @ORM\Entity
并且
/**
* @Id @Column...
应该成为
/**
* @ORM\Id
* @ORM\Column...
@OneToOne
的相同内容应为@ORM\OneToOne
基本上,您没有正确添加注释前缀。您有use Doctrine\ORM\Mapping as ORM;
,但您没有正确使用它。为您的注释添加前缀,这将使您前进。