Symfony2 Catchable Fatal Error: установить метод

Я пытаюсь написать на БД, но я получаю эту ошибку, когда я пишу этот код:

public function createAction(Request $request)
{
$id_user = $request->get('id_user');
var_dump($id_user);
$prova = intval($id_user);
$entity = new UserDigitalPr();

$em = $this->getDoctrine()->getManager();
$entity->setIdUser($prova);
$em->persist($entity);
$em->flush();



return $this->render('DtPyramidBundle:UserDigitalPr:new.html.twig', array(
'entity' => $entity,
));
}

Это ошибка:
Исправляемая фатальная ошибка: Аргумент 1, передаваемый в Dt \ PyramidBundle \ Entity \ UserDigitalPr :: setIdUser (), должен быть экземпляром Dt \ EcBundle \ Entity \ User с указанным целым числом, который вызывается в /var/www/it.virtuego.com/src /Dt/PyramidBundle/Controller/UserDigitalPrController.php в строке 70 и определено

В моей сущности у меня есть это:

class UserDigitalPr
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
*
* @var integer
* @ORM\OneToOne(targetEntity="Dt\EcBundle\Entity\User", inversedBy="digitalpr")
* @ORM\JoinColumn(name="id_user", referencedColumnName="id")
*/
private $id_user;

/**
*
* @var integer
* @ORM\OneToOne(targetEntity="Dt\EcBundle\Entity\User", inversedBy="imtheboss")
* @ORM\JoinColumn(name="become_from", referencedColumnName="id")
*/
private $become_from;

/**
* Set id_user
*
* @param \Dt\EcBundle\Entity\User $idUser
* @return UserDigitalPr
*/
public function setIdUser(\Dt\EcBundle\Entity\User $idUser = null)
{
$this->id_user = $idUser;

return $this;
}

/**
* Get id_user
*
* @return \Dt\EcBundle\Entity\User
*/
public function getIdUser()
{
return $this->id_user;
}

/**
* Set become_from
*
* @param \Dt\EcBundle\Entity\User $becomeFrom
* @return UserDigitalPr
*/
public function setBecomeFrom(\Dt\EcBundle\Entity\User $becomeFrom = null)
{
$this->become_from = $becomeFrom;

return $this;
}

/**
* Get become_from
*
* @return \Dt\EcBundle\Entity\User
*/
public function getBecomeFrom()
{
return $this->become_from;
}
}

В сущности пользователя у меня есть это:

/* ######################################################################## */
/* #############          Tabella user_digital_pr              ############ */
/* ######################################################################## */

/**
* @ORM\OneToOne(targetEntity="Dt\PyramidBundle\Entity\UserDigitalPr", mappedBy="id_user")
* */
private $digitalpr;

/**
* L'utente che ha promosso un'altro utente a digital pr
* @ORM\OneToOne(targetEntity="Dt\PyramidBundle\Entity\UserDigitalPr", mappedBy="become_from")
*/
private $imtheboss;

И метод получения / установки, как это:

  /**
* Set digitalpr
*
* @param \Dt\PyramidBundle\Entity\UserDigitalPr $digitalpr
* @return User
*/
public function setDigitalpr(\Dt\PyramidBundle\Entity\UserDigitalPr $digitalpr = null) {
$this->digitalpr = $digitalpr;

return $this;
}

/**
* Get digitalpr
*
* @return \Dt\PyramidBundle\Entity\UserDigitalPr
*/
public function getDigitalpr() {
return $this->digitalpr;
}

/**
* Set imtheboss
*
* @param \Dt\PyramidBundle\Entity\UserDigitalPr $imtheboss
* @return User
*/
public function setImtheboss(\Dt\PyramidBundle\Entity\UserDigitalPr $imtheboss = null) {
$this->imtheboss = $imtheboss;

return $this;
}

/**
* Get imtheboss
*
* @return \Dt\PyramidBundle\Entity\UserDigitalPr
*/
public function getImtheboss() {
return $this->imtheboss;
}

1

Решение

Вам нужно установить экземпляр объекта сущности, чтобы вы могли найти его и установить следующим образом:

    // your entity namespace
$userObj = $em->getRepository("DtPyramidBundle:User")->find($id_user);
$entity = new UserDigitalPr();

$em = $this->getDoctrine()->getManager();
$entity->setIdUser($userObj);
$em->persist($entity);
$em->flush();

Надеюсь это поможет

0

Другие решения

Вы не можете передать числовое значение setIdUser, вы должны передать ссылку на сущность. Это можно сделать, сначала извлекая сущность, а затем устанавливая ее в качестве параметра.

Но если вам просто нужен объект для установки этого значения, вы также можете передать ссылка субъекту:

$em = $this->getDoctrine()->getManager();
$entity->setIdUser($em->getReference($user_id));
$em->persist($entity);
$em->flush();

Кстати, соответствующее поле сущности не должно называться $id_userпотому что он не содержит идентификатор пользователя (с точки зрения вашего кода), но фактический объект пользователя. Вот и весь смысл использования ORM.

0

По вопросам рекламы [email protected]