폼이 있고 컨트롤러에서 (내가 그것을 사용하는 setFromId 메서드) 1 필드 (fromID) 채우기 싶습니다,하지만 오류가 나타납니다. 내 코드 :symfony 2- 컨트롤러에서 폼을 채우십시오.
public function newAction()
{
$entity = new PrivateMessage();
$user = $this->container->get('security.context')->getToken()->getUser();
$entity->setFromId($user);
$form = $this->createForm(new PrivateMessageType(), $entity);
$form->setData($entity);
return $this->render('AcmeStoreBundle:PrivateMessage:new.html.twig', array(
'entity' => $entity,
'form' => $form->createView(),
));
}
내가 놓친 것이 있습니까? @edit : 필드 fromID가 사용 가능한 경우 작동하는 것을 추가하는 것을 잊어 버렸습니다. 하지만 나는 사용자가 그것을 바꿀 수있게하고 싶지 않다.
그리고 이것은 PrivateMessage 엔티티의 일부입니다
class PrivateMessage
{/ ** * @var 정수 * * @ORM의 \ 열 (= "ID"이름, 유형 = "정수") * @ORM \ Id * @ORM \ GeneratedValue (전략 = "자동") */ private $ id;
/**
*
* @ORM\ManyToOne(targetEntity="User", inversedBy="pm_to")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="to_id", referencedColumnName="id", nullable=false)
* })
*/
private $toID;
/**
*
* @ORM\ManyToOne(targetEntity="User", inversedBy="pm_from")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="from_id", referencedColumnName="id", nullable=false)
* })
*/
private $fromID;
function __construct()
{
$this->setOpened(false);
$this->setRecipientDelete(false);
$this->setSenderDelete(false);
}
/**
* @ORM\PrePersist
*/
public function setFromIdValue()
{
$this->fromID= $this->getFromId();
}
/**
* Set fromID
*
* @param \Acme\Bundle\Entity\User $fromId
* @return PrivateMessage
*/
public function setFromId(\Acme\StoreBundle\Entity\User $fromId = null)
{
$this->fromID = $fromId;
return $this;
}
/**
* Get fromID
*
* @return \Acme\StoreBundle\Entity\User
*/
public function getFromId()
{
return $this->fromID;
}
그리고 오류는 무엇입니까? – Cerad
엔티티 클래스를 붙여 넣을 수 있습니까? – Moylin
"INSERT INTO PrivateMessage (time_sent, subject, message, 열린, recipientDelete, senderDelete, to_id, from_id) VALUES (?,?,?,?,?)를 실행하는 동안 예외가 발생했습니다. 'SQLSTATE [23000] : 무결성 제약 조건 위반 : 1048 열'from_id '매개 변수와 함께'[2013-08-09 22:12:09 ","gd ","hgdh ", 0, 0, 0, 1, 'null이 될 수 없습니다. " – user2637282