2016-09-07 6 views
0

Вот небольшая проблема, которая беспокоит меня на некоторое время, и я до сих пор не полностью овладеть отношения между лицом, я не могу решить эту проблему, несмотря на мою кучу исследований ....Symfony2 отношения ошибка OneToOne однонаправленный

I есть сущность «Activite», в котором у меня есть OneToOne отношение к сущности «ActiviteImage», зная, что деятельность не обязательно ассоциируют картину:

class Activite 
 
{ 
 
    .... 
 
    
 
    /** 
 
    * @ORM\OneToOne(targetEntity="ISC\PlatformBundle\Entity\ActiviteImage", cascade={"persist", "remove"}) 
 
    */ 
 
    private $image; 
 
    
 
    .... 
 
    
 
    /** 
 
    * Set image 
 
    * 
 
    * @param \ISC\PlatformBundle\Entity\ActiviteImage $image 
 
    * @return Activite 
 
    */ 
 
    public function setImage(ActiviteImage $image = null) 
 
    { 
 
     $this->image = $image; 
 
    
 
     return $this; 
 
    } 
 
    
 
    /** 
 
    * Get image 
 
    * 
 
    * @return \ISC\PlatformBundle\Entity\ActiviteImage 
 
    */ 
 
    public function getImage() 
 
    { 
 
     return $this->image; 
 
    } 
 
}

class ActiviteImage 
 
{ 
 
    /** 
 
    * @var integer 
 
    * 
 
    * @ORM\Column(name="id", type="integer") 
 
    * @ORM\Id 
 
    * @ORM\GeneratedValue(strategy="AUTO") 
 
    */ 
 
    private $id; 
 
    
 
    /** 
 
    * @var string 
 
    * 
 
    * @ORM\Column(name="urlImage", type="string", length=255) 
 
    */ 
 
    private $urlImage; 
 
}

мой контроллер, когда форма была отправлена:

$activite->setTextActivity($contentActu); 
 
$activite->setIdFriend(0); 
 
$activite->setDatetimeActivity(new \DateTime()); 
 
$image = new ActiviteImage(); 
 
$image->setUrlImage('http://127.0.0.1:81/IMC/web/uploads/img/'.$fileName); 
 
$activite->setImage($image); 
 
$em->persist($activite); 
 
$em->flush();

Не следует полагаться на простой адрес, это только тесты на данный момент.

Добавление базы данных двух объектов работает только тогда, когда я буду проверять вручную операцию в моей таблице действий. Image_id столбец пуст, он не является NULL, просто пустым (поэтому нет связи с ActiviteImage в таблице) ...

(И если это поможет вам, я знаю, что мы не должны касаться непосредственно таблицы, но я пытаюсь указать идентификатор изображения, phpMyAdmin не возвращает ошибку, просто «0 размещен в Интернете» cf. image - >http://imageshack.com/a/img923/3784/tSiY9d.png)

Другая информация, которая может быть полезна, когда я иду смотреть приложение, выполняемую Symfony я воспринимаю себя, что это хорошо:

INSERT INTO activite (idUser, idTypeActivite, idFriend, textActivity, datetimeActivity, image_id) VALUES (?, ?, ?, ?, ?, ?) 
 
    
 
Parameters: { 1: 1, 2: 2, 3: 0, 4: fghgfh, 5: '2016-09-07 16:30:13', 6: 1 }

Я несколько раз возвращался к учебник Winzou на Openclassroom мышления я что-то пропустил, но если это так, я не понимаю, что ...

Так что, если у вас небольшая отслеживать, чтобы дать мне для этой проблемы сохраняется и относительно хлопотно: эм:

(Не легко понять отношения ... :()

Заранее спасибо,

Kay

ответ

0

Где ваше отношение OneToOne от ActiviteImage -> Activite?

Я установил бы соотношение вверх как двунаправленное, например. вы должны были сопоставлены и инвертироваться в ваших отношениях.

См. documentation.

E.g.

class Activite 
{ 
    // ... 

    /** 
    * @ORM\OneToOne(targetEntity="ActiviteImage", mappedBy="activite", cascade={"persist", "remove"}) 
    */ 
    private $activiteImage; 

    // ... 
} 

/** @Entity */ 
class ActiviteImage 
{ 
    // ... 

    /** 
    * @ORM\OneToOne(targetEntity="Activite", inversedBy="activiteImage") 
    * @ORM\JoinColumn(name="activite_id", referencedColumnName="id") 
    */ 
    private $activite; 

    // ... 
} 

Он должен работать правильно, если вы правильно настроили свои отношения.