2014-10-30 2 views
0

У меня есть две таблицы в моей базе: sliders и images. Один слайдера может иметь много изображений, поэтому структура таблиц:Doctrine: Как вставить значение внешнего ключа

---------  -------- 
| SLIDERS | | IMAGES | 
---------  -------- 
| id | | id | 
---------  -------- 
| title | | title | 
---------  -------- 
       | sid | 
       -------- 
SID is a foreign key associated to id in "SLIDERS" table. 

В сущностях я поставил двунаправленные отношения OneToMany и ManyToOne, так неправдоподобный результат Slider будет содержать Images Objects, которые принадлежат ему, и изображениям будут содержать Slider Object, что принадлежит им.

ползунки Entity:

class Sliders 
{ 

... 

/** 
* @ORM\OneToMany(targetEntity="Images", mappedBy="slider") 
*/ 
protected $images; 

Изображения Entity:

class Images 
{ 

... 

/** 
* @ORM\ManyToOne(targetEntity="Sliders", inversedBy="images") 
* @ORM\JoinColumn(name="sid", referencedColumnName="id") 
*/ 
protected $slider; 

Это действительно удобно для выборки. Но теперь я не могу понять, как можно INSERTsid в таблицу Images, так как у меня нет этого поля в моем объекте, кроме $slider, который возвращает Object. Можно ли это сделать, используя это $slider?

+0

Вы работаете над объектами, доктрина делает все остальное – jamek

+0

Итак, у меня есть только cann 'setSlider()' и поместить объект слайдера в качестве аргумента, а Doctrine будет генерировать 'sid' из него? –

+0

yeap, вы работаете только на объектах – jamek

ответ

0

Следующую функцию вы должны иметь уже в объекте Slider (или аналогичном).

public function addImage(Image $image) 
{ 
    $image->setSlider($this); // This is the line you're probably looking for 
    $this->images[] = $image; 

    return $this; 
} 

Что это делает, если вы будете упорствовать объект записывает идентификатор Slider (SID) в ваш образ.

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