2016-02-04 3 views
0

У меня есть такой сценарий:

enter image description hereдоктрина OneToOne отношения - уникальные ограничения



Субъект, MealListDay один день, который имеет шесть блюд (объектные Meal). Теперь я использую отношения OneToOne. Но есть проблема, потому что больше дней не может иметь одну и ту же сущность. Meal - error: unique constraints. Я знаю, что сущность Meal должна быть уникальной в отношениях OneToOne, но есть ли решение с использованием только этих двух таблиц?

Любая идея? Благодарю.

Entity MealListDay

/** 
    * @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; 

Entity блюдо:

/** 
* @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; 

ответ

0

Я должен реализовать отношение M: N, есть результат. Я знаю, что свойство allergens не находится в 1NF, но это только цифры, которые ссылаются на определенное имя и описание аллергена, которые определяются статически в классе.

enter image description here

0

Ваш mmodel имеет первую нормальную проблему формы.

Попробуйте следующее:

MealListDay - идентификатор - dateOffered

MealOffering - MealListDayID (FK для MealListDay) - MealId (FK для Meal)

Meal - идентификатор - имя

КБТ, включая аллергены в еде, вероятно, приведет к 1N F также

Смежные вопросы