Php 在OneToMany和OneToOne中失败

Php 在OneToMany和OneToOne中失败,php,symfony,doctrine-orm,doctrine,Php,Symfony,Doctrine Orm,Doctrine,在过去的几天里,我一直在为一个使用原则的简单案例而奋斗。 信条和符号是最新的。 我有两个实体Serie和Asset,它们通过两种关系相互联系,一种是OneTone,另一种是OneToMany 模式与此完全相同: 意甲有很多资产。(内容) 一个意甲可以有一个资产。(预览,此字段可为空) 但是,无论我如何尝试编写和重写注释,最终都会出现以下错误: 使用参数[1]执行“从序列中删除,其中id=?”时发生异常: SQLSTATE[23000]:完整性约束冲突:1451无法删除或删除 更新父行:外键约束失

在过去的几天里,我一直在为一个使用原则的简单案例而奋斗。 信条和符号是最新的。 我有两个实体Serie和Asset,它们通过两种关系相互联系,一种是OneTone,另一种是OneToMany

模式与此完全相同:

意甲有很多资产。(内容)

一个意甲可以有一个资产。(预览,此字段可为空)

但是,无论我如何尝试编写和重写注释,最终都会出现以下错误:

使用参数[1]执行“从序列中删除,其中id=?”时发生异常:

SQLSTATE[23000]:完整性约束冲突:1451无法删除或删除 更新父行:外键约束失败 (
galanis
asset
,CONSTRAINT
FK_2AF5A5CAA3A9334
外键 (
serie
)参考资料
serie
id

当然,如果在以下代码中删除“预览”字段及其注释,问题就会消失:

/**
 * Serie
 *
 * @ORM\Table(name="serie")
 * @ORM\Entity(repositoryClass="Gedmo\Sortable\Entity\Repository\SortableRepository")
 * @ORM\HasLifecycleCallbacks
 */
class Serie
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(name="title", type="string", length=96)
 */
private $title;

/**
 * @var integer
 *
 * @Gedmo\SortablePosition
 * @ORM\Column(name="position", type="integer", nullable=true)
 */
private $position;

/**
 * @var \Portfolio
 *
 * @ORM\ManyToOne(targetEntity="Portfolio", inversedBy="series")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="portfolio", referencedColumnName="id")
 * })
 */
private $portfolio;


/**
 * @var \Asset
 *
 * @ORM\OneToOne(targetEntity="Asset")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="preview", referencedColumnName="id", nullable=true, onDelete="SET NULL")
 * })
 */
private $preview;

/**
 * @var \Doctrine\Common\Collections\Collection
 *
 * @ORM\OneToMany(targetEntity="Asset", mappedBy="serie", cascade={"remove"})
 **/
private $assets;
以下是资产实体的代码:

/**
 * Asset
 *
 * @ORM\Table(name="asset")
 * @ORM\Entity(repositoryClass="Gedmo\Sortable\Entity\Repository\SortableRepository")
 * @ORM\HasLifecycleCallbacks
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="asset", type="string")
 * @ORM\DiscriminatorMap({"asset" = "Asset", "video" = "Video","image" = "Image"})
 *
 */
class Asset
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @var string
 *
 * @ORM\Column(name="path", type="string", length=128)
 */
protected $path;

/**
 * @var string
 *
 * @ORM\Column(name="filename", type="string", length=64)
 */
protected $filename;

/**
 * @var integer
 *
 * @ORM\Column(name="position", type="integer", nullable=true)
 * @Gedmo\SortablePosition
 */
protected $position;

/**
 * @var string
 *
 * @ORM\Column(name="description", type="string", length=255, nullable=true)
 */
protected $description;

/**
 * @var string
 *
 * @ORM\Column(name="mime", type="string", length=16, nullable=true)
 */
protected $mime;

/**
 * @var \Serie
 *
 * @ORM\ManyToOne(targetEntity="Serie", inversedBy="assets")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="serie", referencedColumnName="id")
 * })
 */
protected $serie;

/**
 * @var UploadedFile
 */
protected $file;

/**
 * @var string
 */
protected $extension;

这让我疯狂,只是一些简单的关系。。。是否有我不再看到的错误,或者我需要使用解决方法?

我的猜测是在资产实体中的多通关系上设置级联={“删除”},而不是相反。这样,它告诉条令当你删除一个链接到许多资产的系列时该怎么做