【问题标题】:Doctrine OneToOne relationship - unique constraintsDoctrine OneToOne 关系 - 独特的约束
【发布时间】:2016-05-14 18:07:19
【问题描述】:

我有这种情况:



实体MealListDay是一天,有六顿饭(实体Meal)。现在我使用 OneToOne 关系。但是有问题,因为更多天不能有相同的实体餐 - 错误:唯一约束。我知道,实体 Meal 在 OneToOne 关系中必须是唯一的,但是仅使用这两个表有什么解决方案吗?

有什么想法吗?谢谢。

实体用餐清单日

    /**
    * @ORM\Id
    * @ORM\Column(type="integer")
    * @ORM\GeneratedValue
    * @var integer
    */
    protected $id;

    /**
     * @ORM\OneToOne(targetEntity="Meal", cascade={"persist"})
     * @ORM\JoinColumn(onDelete="SET NULL")
     * @var Meal
     */
    protected $elevenses;

    /**
     * @ORM\OneToOne(targetEntity="Meal", cascade={"persist"})
     * @ORM\JoinColumn(onDelete="SET NULL")
     * @var Meal
     */
    protected $soup;

    /**
     * @ORM\OneToOne(targetEntity="Meal", cascade={"persist"})
     * @ORM\JoinColumn(onDelete="SET NULL")
     * @var Meal
     */
    protected $mainMeal;

    /**
     * @ORM\OneToOne(targetEntity="Meal", cascade={"persist"})
     * @ORM\JoinColumn(onDelete="SET NULL")
     * @var Meal
     */
    protected $sideDish;

    /**
     * @ORM\OneToOne(targetEntity="Meal", cascade={"persist"})
     * @ORM\JoinColumn(onDelete="SET NULL")
     * @var Meal
     */
    protected $drink;

    /**
     * @ORM\OneToOne(targetEntity="Meal", cascade={"persist"})
     * @ORM\JoinColumn(onDelete="SET NULL")
     * @var Meal
     */

   protected $nosh;

实体餐:

/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue
* @var integer
*/
private $id;

/**
 * @ORM\Column(type="string", length=150)
 */
protected $name;

/**
 * @ORM\Column(type="string", length=20)
 */
protected $type;

/**
 * @ORM\Column(type="simple_array", nullable=true)
 */
protected $allergens;

【问题讨论】:

    标签: doctrine-orm entity-relationship entities unique-index


    【解决方案1】:

    您的 mmodel 存在第一范式问题。

    尝试以下方法:

    MealListDay - ID - 提供日期

    MealOffering - MealListDayID(FK 到 MealListDay) - MealId(FK 到 Meal)

    膳食 - ID - 名称

    顺便说一句,包括食物中的过敏原也可能导致 1NF 问题

    【讨论】:

      【解决方案2】:

      我必须实现关系 M:N,有结果。 我知道,属性 allergens 不在 1NF 中,但这些只是数字,它们链接到在类中静态定义的特定过敏原名称和描述。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多