当前位置: 首页 > 知识库问答 >
问题:

Symfony2条令关联映射错误处理

贝研
2023-03-14

在使用php app/console原则时,我得到以下错误:schema:update--force。

[Doctrine\DBAL\DBALException]                                                
  An exception occurred while executing 'ALTER TABLE profiles ADD CONSTRAINT   
  FK_8B30853036802B0F FOREIGN KEY (participantid) REFERENCES participants (id  
  )':                                                                          
  SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update   
  a child row: a foreign key constraint fails (`smartplan_dev`.`#sql-518_60`,  
   CONSTRAINT `FK_8B30853036802B0F` FOREIGN KEY (`participantid`) REFERENCES   
  `participants` (`id`)) 
[PDOException]
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update
a child row: a foreign key constraint fails (smartplan_dev.#sql-518_60,
CONSTRAINT FK_8B30853036802B0F FOREIGN KEY (participantid) REFERENCES
participants (id))

这里是我的实体文件的问题。(profiles部分完成)。

namespace classes\classBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * profiles
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class profiles
{
    /** 
     * 
     * @ORM\ManyToOne(targetEntity="participants", inversedBy="profiles")
     * @ORM\JoinColumn(name="participantid", referencedColumnName="id")
     */
    public $participant;//participant variable
    /**
     * @ORM\OneToMany(targetEntity="profilesBeneficiaries", mappedBy="profile")
     * 
     */
    public $beneficiaries;//beneficiaries array variable
    public $contributions; //contributions variable
    public $investments; //investments array variable
    public $retirementNeeds; //retirementNeeds variable
    public $riskProfile;//riskProfile variable
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    public $id;
    /**
     * @var integer
     *
     * @ORM\Column(name="participantid", type="integer")
     */
    public $participantid;   
    /**
     * @var integer
     *
     * @ORM\Column(name="userid", type="integer")
     */
    public $userid;
    /**
     * @var string
     *
     * @ORM\Column(name="planid", type="integer")
     */
    public $planid;
    /**
     * @var string
     *
     * @ORM\Column(name="planName", type="string", length=255)
     */
    public $planName;
    /**
     * @var string
     *
     * @ORM\Column(name="currentBalance", type="float",length = 255)
     */
    public $currentBalance;
    /**
     * @var string
     *
     * @ORM\Column(name="beneficiaryStatus", type="text",length = 65535)
     */
    public $beneficiaryStatus;
    /**
     * @var string
     *
     * @ORM\Column(name="investmentsStatus", type="text",length = 65535)
     */
    public $investmentsStatus;
    /**
     * @var string
     *
     * @ORM\Column(name="realignmentStatus", type="text",length = 65535)
     */
    public $realignmentStatus;
    /**
     * @var string
     *
     * @ORM\Column(name="contributionsStatus", type="text",length = 65535)
     */
    public $contributionsStatus;
    /**
     * @var string
     *
     * @ORM\Column(name="catchupContributionStatus", type="text",length = 65535)
     */
    public $catchupContributionStatus;
    /**
     * @var string
     *
     * @ORM\Column(name="annualSalary", type="float",length = 255)
     */
    public $annualSalary;
     /**
     * @var string
     *
     * @ORM\Column(name="retireAge", type="integer")
     */
    public $retireAge;
     /**
     * @var string
     *
     * @ORM\Column(name="preTaxSavingRate", type="float",length = 255)
     */
    public $preTaxSavingRate;
     /**
     * @var string
     *
     * @ORM\Column(name="postTaxSavingRate", type="float",length = 255)
     */
    public $postTaxSavingRate;
     /**
     * @var string
     *
     * @ORM\Column(name="rothTaxSavingRate", type="float",length = 255)
     */
    public $rothTaxSavingRate;
     /**
     * @var string
     *
     * @ORM\Column(name="mStarContribution", type="text",length = 65535)
     */
    public $mStarContribution;
     /**
     * @var string
     *
     * @ORM\Column(name="mStarStatus", type="text",length = 65535)
     */
    public $mStarStatus;
     /**
     * @var string
     *
     * @ORM\Column(name="smart401kStatus", type="text",length = 65535)
     */
    public $smart401kStatus;
     /**
     * @var string
     *
     * @ORM\Column(name="reportDate", type="datetime")
     */
    public $reportDate;
     /**
     * @var string
     *
     * @ORM\Column(name="profileId", type="string", length = 50)
     */
    public $profileId;
     /**
     * @var string
     *
     * @ORM\Column(name="acceptedAdvice", type="text",length = 65535)
     */
    public $acceptedAdvice;
     /**
     * @var string
     *
     * @ORM\Column(name="ACAOptOutStatus", type="text",length = 65535)
     */
    public $ACAOptOutStatus;
     /**
     * @var string
     *
     * @ORM\Column(name="profilestatus", type="smallint")
     */
    public $profilestatus;
     /**
     * @var string
     *
     * @ORM\Column(name="availability", type="string",length = 250)
     */
    public $availability;
     /**
     * @var string
     *
     * @ORM\Column(name="clientCalling", type="string",length = 50)
     */
    public $clientCalling;
     /**
     * @var string
     *
     * @ORM\Column(name="mstarQuit", type="smallint" )
     */
    public $mstarQuit;
     /**
     * @var string
     *
     * @ORM\Column(name="rkdData", type="text",length = 65535 )
     */
    public $rkdData;
     /**
     * @var string
     *
     * @ORM\Column(name="welcomeVideo", type="string",length = 63 )
     */
    public $welcomeVideo;
     /**
     * @var string
     *
     * @ORM\Column(name="planBasicVideo", type="string",length = 127 )
     */
    public $planBasicVideo;
     /**
     * @var string
     *
     * @ORM\Column(name="uniqid", type="string",length = 63 )
     */
    public $uniqid;
     /**
     * @var string
     *
     * @ORM\Column(name="migration", type="smallint" )
     */
    public $migration;
}
namespace classes\classBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * participants
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class participants
{

    /**
     * @ORM\OneToMany(targetEntity="profiles", mappedBy="participant")
     * 
     */
    public $profiles;//array of profiles


    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    public $id;
    /**
     * @var string
     *
     * @ORM\Column(name="firstName", type="blob", length = 127)
     */
    public $firstName;
    /**
     * @var string
     *
     * @ORM\Column(name="lastName", type="blob", length = 127)
     */
    public $lastName;
    /**
     * @var string
     *
     * @ORM\Column(name="legalName", type="blob", length = 255)
     */
    public $legalName;
    /**
     * @var string
     *
     * @ORM\Column(name="address", type="blob", length = 255)
     */
    public $address;
    /**
     * @var string
     *
     * @ORM\Column(name="city", type="string", length = 50)
     */
    public $city;
    /**
     * @var string
     *
     * @ORM\Column(name="state", type="string", length = 50)
     */
    public $state;
    /**
     * @var string
     *
     * @ORM\Column(name="zip", type="string", length = 10)
     */
    public $zip;
    /**
     * @var string
     *
     * @ORM\Column(name="maritalStatus", type="blob", length = 63)
     */
    public $maritalStatus;
    /**
     * @var string
     *
     * @ORM\Column(name="employmentDate", type="blob", length = 127)
     */
    public $employmentDate;
    /**
     * @var string
     *
     * @ORM\Column(name="birthDate", type="blob", length = 127)
     */
    public $birthDate;
    /**
     * @var string
     *
     * @ORM\Column(name="employeeId", type="blob", length = 255)
     */
    public $employeeId;
    /**
     * @var string
     *
     * @ORM\Column(name="email", type="blob", length = 255)
     */
    public $email;

     /**
     * @var string
     *
     * @ORM\Column(name="phone", type="string",length = 50)
     */
    public $phone;
}

共有1个答案

昝成弘
2023-03-14

是的,它失败是因为模式中的一个条目或条目数违反了外键约束。这与您的映射或教义ORM无关。这是一个sql返回的错误,不,您不能强迫它跳过任何失败的条目,因为条令只是数据库的一个抽象层。在任何情况下,这是外键的全部意义,以保持数据完整性。

对不起,伙计,但我觉得我有责任告诉您,找到那些违反约束的表项并相应地处理它们将符合您的最佳利益。下一次,当客户尝试对数据库进行任何操作时,除非他知道自己在做什么,否则他将无法操作,这是应该做的。

 类似资料:
  • 主要内容:关联映射,反转,级联在前面的学习中,我们所涉及的都是基于单表的操作,但在实际的开发过程中,基本上都是同时对多张表的操作,且这些表都存在一定的关联关系。 Hibernate 是一款基于 ORM 设计思想的框架,它将关系型数据库中的表与我们 Java 实体类进行映射,表中的记录对应实体类的对象,而表中的字段对应着实体类中的属性。Hibernate 进行增删改查等操作时,不再直接操作数据库表,而是对与之对应的实体类对象进行

  • 问题内容: 我想使用Hibernate的条件api来制定连接两个实体的特定查询。假设我有两个实体,Pet和Owner,拥有者拥有很多宠物,但是关键是关联没有映射到Java批注或xml中。 使用hql,我可以通过在查询中指定联接来选择拥有“ fido”宠物的所有者(而不是将一组宠物添加到owner类)。 可以使用hibernate条件进行相同的操作吗?如果可以,怎么办? 谢谢,J 问题答案: 我的理

  • 第 7 章 关联关系映射

  • 是否有一种方法可以只得到那些数据我不需要所有的数据从所有其他的表组合键??多谢帮忙!

  • 1. 前言 本节课,咱们一起继续聊聊多对多关联映射。通过本节课程,你将了解到: 多对多关联映射的实现; 双向多对多关联映射的实现。 2. 多对多关联映射 首先了解表中的多对多关系,学生表中的数据和课程表中的数据就存在多对多关系。 一名学生可以选修多门课程,一门课程可以供多名学生选修。 数据库通过主外键的机制描述表中的数据之间的关系。对于存在多对多关系的数据表,借助于中间表,分拆成两个一对多(或者多

  • 1. 前言 本节课程和大家一起聊聊关联映射。通过本节课程的学习,你将了解到: 什么是关联映射; 如何实现一对一关联映射。 2. 关联映射 关系数据库中的数据以表为家,一张表一个家,一个家住一类数据。众多表组成关系型社区,关系型社区群体中的数据关系通过主外键方式描述。 表与表之间的数据根据彼此的关系可分为: 一对一关系: 如老公表和老婆表的关系; 一对多关系: 如用户表和银行账号表关系; 多对一关系