2013-12-18 64 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

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