2015-10-26 36 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