Ошибка отношения 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;
// ...
}
Он должен работать правильно, если вы правильно настроили свои отношения.