2013-12-18 62 views
3

我试图让从例如onetoone关系 - http://docs.doctrine-project.org/en/latest/tutorials/composite-primary-keys.html#use-case-2-simple-derived-identitySymfony2的学说onetoone完整的例子

这是第二次尝试,首先是这里symfony 2 doctrine relation onetoone

住址

<?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应用程序/控制台学说:架构:更新 - F奥尔塞

PHP应用程序/控制台教义:模式:更新--force

[学说\共同\注解\ AnnotationException]
[语义错误]注释 “@Doctrine \ ORM \映射” 在属性Miejsce \ ObiektyBundle \ Entity \ Adres :: $用户不会自动加载
xist或无法自动加载。
那么,我可以有错误吗?

  • 错误是语法 - 我有@ ORM/OneToOne但需要@ORM \ OneToOne现在工作正常! :)
+0

这篇文章的重点是什么? – Dheeraj

回答

2

我不确定如果我完全理解您的要求,但您的注释设置不正确。

/** 
* @Entity 

应该成为

/** 
* @ORM\Entity 

而且

/** 
* @Id @Column... 

应该成为

/** 
* @ORM\Id 
* @ORM\Column... 

同为@OneToOne应该@ORM\OneToOne

基本上你没有正确地为你的注释加前缀。您有use Doctrine\ORM\Mapping as ORM;但您没有正确使用它。前缀你的注释,这将让你去。

+0

我从教条文档[链接](http://docs.doctrine-project.org/en/latest/tutorials/composite-primary-keys.html#use -case-2-simple-derived-identity) - 我不能使用doctrine文档? –

+0

你没有使用纯粹的教条。你在Symfony里面使用了教义。 '@ ORM'就在那里,所以你不必包含多个'use'语句。它简化了事情。如果您想遵循doctrine文档而不是Symfony文档,请继续,但您不能指望复制和粘贴并使其工作。 – Sehael

+0

好吧现在明白 - 这部分,但仍然不明白为什么我设置onetoone关系,如在例子 –

3

答案是错误消息。看看你们两个班级有什么不同。

/** 
* @Entity 
*/ 

Vs的:

/** 
* @ORM\Entity 
*/ 

所以更新是给你的错误之一。

编辑

当您导入主义的注解与use Doctrine\ORM\Mapping as ORM;,你需要与@ORM\开始所有的这些注释。注释读者将知道@ORM\Entity实际上意味着@Doctrine\ORM\Mapping\Entity,它是定义该注释的类。

+0

我更新它就像你写但仍然不工作 –