【问题标题】:Symfony: Integrity constraint violation: 500 Internal Server ErrorSymfony:违反完整性约束:500 内部服务器错误
【发布时间】:2017-05-24 14:56:57
【问题描述】:

我在 symmfony 应用程序中的两个表之间有一对多的关系。其中一张表的注册方法接受 JSON POST 请求。在尝试从 mysql 界面手动将数据插入数据库时​​,一切都很好,但是当我尝试使用 POST 请求执行插入时,我得到了

500 Internal Server Error with a Integrity constraint violation:

这是 POST 请求的控制器

                   $register->setConfirmpassword($params["confirmpassword"]);
                   $register->setAccountfk($params["accountsfk"]);

这是来自邮递员的示例 JSON 帖子

{
    "accountsfk":2
    }

注册具有帐户的外键。在发出发布请求时,我收到此错误

带参数 ["myname", "mylastname", "emails123@email.com", "passwords", "passwords", null]:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'accountsfk' cannot be null (500 Internal Server Error)

请问我做错了什么,我无法在注册表中插入记录

【问题讨论】:

  • 您能出示您的实体吗?
  • 哪个实体
  • 请实体注册
  • accountsfk 与 Account 有关系吗?
  • 是的,从注册表中我有 accountsfk 指向 Account 的 id

标签: php mysql json symfony


【解决方案1】:

我认为accountsfk是一个外键,所以你需要将帐户而不是id传递给注册,如下所示:

$em = $this->getDoctrine()->getManager();       
$account = $em->getRepository('AppBundle:Account')->find($params["accountsfk"]);

$register->setFirstname($params["firstname"]);
$register->setLastname($params["lastname"]);
$register->setEmail($params["email"]);
$register->setPassword($params["password"]);
$register->setConfirmpassword($params["confirmpassword"]);
$register->setAccountfk($params["accountsfk"]);
$register->setAccounts($account]);

在第一行我得到了帐户,但我不知道哪个是您的捆绑包和您的帐户实体,但重要的是要了解您必须将实体而不是 id 传递给setAccountfk

我认为你有 setAccountfk 这不是必需的,你只需要 setAccounts 来注册到帐户的关系

【讨论】:

  • 如果有更多信息,读取日志文件,尝试var_dump $account检查是否有帐户,然后尝试更新问题与注册实体
  • 好的我已经看到了转储并且似乎是正确的所以我认为实体注册有问题。你能把它发布到问题中吗?
  • 更新答案@parker
  • 谢谢你。这是最后一招>>>>>> $register->setAccounts($account);
  • 完美!很高兴为您提供帮助!
猜你喜欢
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多