简体   繁体   English

原则OneToOne关系不会从反面加载

[英]Doctrine OneToOne relationship doesn't load from inversed side

I have a user. 我有一个用户。 Some users use a messaging system. 一些用户使用消息传递系统。 Those users (but not all) have messageUserSettings. 这些用户(但不是全部)具有messageUserSettings。 I want to create a "OneToOne" relationship between these entities. 我想在这些实体之间创建一个“ OneToOne”关系。

This is what I have (edited down): 这是我(编辑后)的内容:

MessageUserSettings.php 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 user.php的

<?php

use Doctrine\ORM\Mapping as ORM;

/**
 * Users
 *
 * @ORM\Entity
 * @ORM\Table(
 *      name="users",
 *      uniqueConstraints={
 *          @ORM\UniqueConstraint(name="users_username_unique", columns={"username"}),
 *          @ORM\UniqueConstraint(name="users_email_unique", columns={"email"})
 *      }
 * )
 */
class User {

    /**
     * @ORM\OneToOne(targetEntity="MessageUserSettings", mappedBy="user")
     **/
    protected $messageSettings;

    /**
     * @return MessageUserSettings
     */
    public function getMessageSettings()
    {
        return $this->messageSettings;
    }

}

I can see the foreign key and fields in the table as expected. 我可以按预期在表中看到外键和字段。

TABLE_NAME             COLUMN_NAME  CONSTRAINT_NAME      REFERENCED_TABLE_NAME  REFERENCED_COLUMN_NAME
message_user_settings  user_id      FK_4C6502BDA76ED395  users                  id

I can go from MessageUserSettings to User but not the other way around. 我可以从MessageUserSettings转到User但不能MessageUserSettings What have I missed? 我错过了什么?

For a One-To-One, Bidirectional: 对于一对一双向:

class MessageUserSettings 
{

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

     /***/
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM