Ошибка отношения Symfony2 OneToOne однонаправленная

Вот небольшая проблема, которая беспокоит меня некоторое время, и, поскольку я до сих пор не полностью освоил отношения между сущностями, я не могу ее решить, несмотря на мои исследования...

У меня есть объект " 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();

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

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

(И если это поможет вам, я знаю, что мы не должны касаться непосредственно таблицы, но я пытаюсь сообщить идентификатор изображения, phpMyAdmin не возвращает ошибку, просто "0 опубликовано онлайн", см. Изображение -> 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, думая, что что-то упустил, но если это так, я не вижу, что...

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

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

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

Кей

1 ответ

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

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

Смотрите документацию.

Например

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;

    // ...
}

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

Другие вопросы по тегам