[英]Self referencing table where reference is NOT NULL
是否可以有一個自引用 ID 不是 NULL 的自引用實體? 請參閱我的示例實體,其中parent.parent_id
配置為nullable=false
。 當我刷新時,我收到以下錯誤:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'parent_id' cannot be null (0) class: Doctrine\DBAL\Exception\NotNullConstraintViolationException
觸發器會起作用,但是,我寧願不手動添加觸發器。 Doctrine 可以配置為生成觸發器嗎? 也許可以使用生命周期回調?
<?php
use Doctrine\ORM\Mapping as ORM;
/**
* ParentClass
*
* @ORM\Table(name="parent")
* @ORM\Entity
*/
class ParentClass
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\OneToMany(targetEntity="ParentClass", mappedBy="parent")
*/
private $child;
/**
* @var ParentClass
*
* @ORM\ManyToOne(targetEntity="ParentClass", inversedBy="child")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id", nullable=false)
* })
*/
private $parent;
/**
* Constructor
*/
public function __construct()
{
$this->child = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Get id.
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Add child.
*
* @param ParentClass $child
*
* @return ParentClass
*/
public function addChild(ParentClass $child)
{
$this->child[] = $child;
return $this;
}
/**
* Remove child.
*
* @param ParentClass $child
*
* @return boolean TRUE if this collection contained the specified element, FALSE otherwise.
*/
public function removeChild(ParentClass $child)
{
return $this->child->removeElement($child);
}
/**
* Get child.
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getChild()
{
return $this->child;
}
/**
* Set parent.
*
* @param ParentClass $parent
*
* @return ParentClass
*/
public function setParent(ParentClass $parent)
{
$this->parent = $parent;
return $this;
}
/**
* Get parent.
*
* @return ParentClass
*/
public function getParent()
{
return $this->parent;
}
}
嘗試這個。 希望它會起作用
public function addParent(ParentClass $parent)
{
$this->parent[] = $parent;
$parent->setParent($this);
return $this;
}
public function removeParent(ParentClass $parent)
{
$this->parent->removeElement($parent);
}
public function setParent()
{
return $this->parent;
}
public function addParent(ParentClass $parent)
{
$this->parent[] = $parent;
$parent->setParent($this);
return $this;
}
public function removeParent(ParentClass $parent)
{
$this->parent->removeElement($parent);
}
public function getParent()
{
return $this->parent;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.