gpt4 book ai didi

php - 创建密码恢复表-插入值时出错

转载 作者:行者123 更新时间:2023-12-03 07:58:55 26 4
gpt4 key购买 nike

我有一个具有ID,名称,邮件等属性的User类。
我正在实现密码恢复过程,因此我创建了带有以下列的password_recovery表:

  • id
  • user_id
  • token
  • 创建日期
  • 到期日期
  • 已过期

  • 这是我的 PasswordRecovery类别:
    namespace \UserBundle\Entity;

    use Doctrine\ORM\Mapping as ORM;
    use Doctrine\Common\Collections\ArrayCollection;
    use Symfony\Component\Validator\Constraints as Assert;

    /**
    * @ORM\Entity
    * @ORM\Table(name="password_recovery")
    */
    class PasswordRecovery {

    /**
    * @ORM\Column(type="integer")
    * @ORM\Id
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    private $id;

    /**
    * @ORM\ManyToOne(targetEntity="User")
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
    */
    private $idUser;

    /**
    * @ORM\Column(type="string")
    */
    private $token;

    /**
    * @ORM\Column(type="datetime")
    * @Assert\DateTime()
    */
    private $createdDate;

    /**
    * @ORM\Column(type="datetime")
    * @Assert\DateTime()
    */
    private $expireDate;

    /**
    * @ORM\Column(type="boolean")
    */
    private $expired; }

    用户想要恢复密码时,必须输入电子邮件。如果邮件在数据库中,则创建一个 PasswordRecovery对象并将其存储在数据库中。这就是我的操作方式:(一小部分代码)
    if (!empty($resetMail))
    {

    $recovery = new PasswordRecovery();

    $token = bin2hex(openssl_random_pseudo_bytes(16));
    $recovery->setToken($token);
    $userId = $resetMail->getId();
    $recovery->setIdUser($userId);


    $recovery->setCreatedDate(new \DateTime('now'));

    $expiry = (new \DateTime('now + 1day'));
    $recovery->setExpireDate($expiry);
    $recovery->setExpired(false);

    $em = $this->getDoctrine()->getManager();
    $em->persist($recovery);
    $em->flush(); }

    我收到此错误:
    Catchable Fatal Error: Argument 1 passed to \UserBundle\Entity\PasswordRecovery::setIdUser() must be an instance of \UserBundle\Entity\User, integer given, called in /home/user/project/src/UserBundle/Controller/AccountController.php on line 553 and defined

    为什么?

    最佳答案

    您需要使用setIdDUser(User)。这是一个代理对象,因为它是对另一个表(实体)的引用

    以同样的方式,当您调用getIdUser()时,您将再次获得一个代理对象,如果您想要int值,则必须在其上调用getId()

    关于php - 创建密码恢复表-插入值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39898138/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com