2015-10-26 38 views
1

我有一個用戶。一些用戶使用消息傳遞系統。這些用戶(但不是全部)具有messageUserSettings。我想創建這些實體之間的「OneToOne」關係。學說OneToOne關係不從反面加載

這是我(編輯了下來):

MessageUserSettings.php

<?php 

use Doctrine\ORM\Mapping as ORM; 

/** 
* MessageUserSettings 
* @ORM\Entity 
* @ORM\Table(name="message_user_settings") 
*/ 
class MessageUserSettings { 

    /** 
    * @var User 
    * 
    * @ORM\OneToOne(targetEntity="User", inversedBy="messageSettings") 
    */ 
    protected $user; 

    /** 
    * Get user 
    * @return User 
    */ 
    public function getUser() 
    { 
     return $this->user; 
    } 

} 

user.php的

​​3210

我可以看到外鍵和領域在預期的表格中。

TABLE_NAME    COLUMN_NAME CONSTRAINT_NAME  REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME 
message_user_settings user_id  FK_4C6502BDA76ED395 users     id 

我可以去從MessageUserSettingsUser而不是周圍的其他方式。我錯過了什麼?

回答

0

對於一個一比一,雙向:

class MessageUserSettings 
{ 

    /** 
    * @var User 
    * 
    * @ORM\OneToOne(targetEntity="User", inversedBy="messageSettings") 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
    */ 
    protected $user; 

    /***/ 
} 
+0

'JoinColumn'自動應用於像(基於名稱)反正,然而即使該行仍然無法正常工作。 – DanielM

+0

http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/association-mapping.html – scoolnico

+0

「上面的@JoinColumn是可選的,因爲它會默認使用address_id和id。省略它並讓它使用默認值。「 – DanielM