1

我对原则 2 有疑问。我有以下 db 表:因此,Doctrine 生成从站点的桌面设置中检索数据的实体,但我需要从desk_settings 表中检索所有设置并使用desk_id 从desk_settings_values 表中覆盖其值

数据库图像-> https://docs.google.com/file/d/0B7rOFTJGfJwTWEQ3bXZFU1hXZlU/edit?usp=sharing

使用脚本生成的教义实体:

/**
 * 桌子
 *
 * @ORM\Table(name="desk")
 * @ORM\实体
 */
课桌
{
    /**
     * @var 整数
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\ID
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    私人 $id;

    /**
     * @var 字符串
     *
     * @ORM\Column(name="code", type="string", length=100, nullable=false)
     */
    私人$代码;

    /**
     * @var 字符串
     *
     * @ORM\Column(name="description", type="string", length=255, nullable=false)
     */
    私人$描述;

    /**
     * @var \日期时间
     *
     * @ORM\Column(name="created", type="datetime", nullable=false)
     */
    私人$创建;

    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\ManyToMany(targetEntity="PayBox\Entity\DeskSettings", mappedBy="desk")
     */
    私人 $deskSettings;
}

使用 Doctrine\ORM\Mapping 作为 ORM;

/**
 * 桌面设置
 *
 * @ORM\Table(name="desk_settings")
 * @ORM\实体
 */
课桌设置
{
    /**
     * @var 整数
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\ID
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    私人 $id;

    /**
     * @var 字符串
     *
     * @ORM\Column(name="setting_key", type="string", length=100, nullable=false)
     */
    私人 $settingKey;

    /**
     * @var 字符串
     *
     * @ORM\Column(name="setting_value", type="string", length=255, nullable=false)
     */
    私人 $settingValue;

    /**
     * @var \日期时间
     *
     * @ORM\Column(name="created", type="datetime", nullable=false)
     */
    私人$创建;

    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\ManyToMany(targetEntity="PayBox\Entity\Desk", inversedBy="deskSettings")
     * @ORM\JoinTable(name="desk_settings_values",
     * 加入列={
     * @ORM\JoinColumn(name="desk_settings_id", referencedColumnName="id")
     * },
     * inverseJoinColumns={
     * @ORM\JoinColumn(name="desk_id", referencedColumnName="id")
     * }
     * )
     */
    私人 $desk;
 }

4

1 回答 1

1

从教义文档:

为什么多对多关联不太常见?因为您经常希望将附加属性与关联关联,在这种情况下您需要引入关联类。因此,直接的多对多关联消失了,取而代之的是三个参与类之间的一对多/多对一关联。

您需要将类结构更改为一对多/多对一。看到这个博客

于 2013-08-04T22:45:06.023 回答