【问题标题】:Doctrine2 cannot insert into associated tableDoctrine2 无法插入关联表
【发布时间】:2015-07-01 13:35:01
【问题描述】:

我尝试插入 2 个表之间的关联表, 我有这个错误:

可捕获的致命错误:参数 1 传递给 Acme\HomeBundle\Entity\AuthUsergroup::setLogin() 必须是一个实例 Acme\HomeBundle\Entity\AuthUser,给定字符串,调用 /var/www/html/prj/src/Acme/HomeBundle/Controller/UserController.php 在第 73 行并定义

第 73 行是:$aug->setLogin($my_id); 这个函数来自:

/**
 * Set login
 *
 * @param \Acme\HomeBundle\Entity\AuthUser $login
 *
 * @return AuthUsergroup
 */
public function setLogin(\Acme\HomeBundle\Entity\AuthUser $login = null)
{
    $this->login = $login;

    return $this;
}

【问题讨论】:

  • 你能转储$my_idplease 吗?问题似乎是它是一个字符串,而不是 AuthUser 对象。
  • 这给了我:字符串(6)“Fred”,那么我怎样才能将其更改为对象?
  • 您应该发布您的 AuthUser 实体代码,但我猜是这样的:$newAuth = new AuthUser(); $newAuth->setName($my_id);。但是我必须建议您在方法和变量名称上保持一致:$my_id 应该是一个 id,也就是说一个整数,您可以使用它找到对象,无论它们是什么。这里你的命名很混乱。

标签: php symfony doctrine-orm controller


【解决方案1】:

这个错误很容易解释:setLogin() 方法需要一个 AuthUser 对象,而你给它一个字符串。你必须通过才能做这样的事情:

$newAuth = new AuthUser();
// assuming the AuthUser class has a setName() method
$newAuth->setName($my_id);
// You pass a AuthUser object -> no more exception thrown
$aug->setLogin($newAuth);

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多