我是Symfony4的新手。我有一个与表格中的值设置有关的问题。我一直在关注Symfony的文档。我想把用户的 电子邮件 和 密码邀请 变量在邀请表中,但它给我一个错误。
请帮我解决我的问题。
这些是我的实体
应用实体用户.php
class User implements UserInterface, \Serializable
{
(...)
/**
* @ORM\Column(type="string", length=255, unique=true)
* @ORM\OneToMany(targetEntity="App\Entity\Invitacion", mappedBy="user")
*/
private $email;
/**
* @ORM\Column(type="string", length=255, unique=true)
* @ORM\OneToMany(targetEntity="App\Entity\Invitacion", mappedBy="user")
*/
private $codeinvitaciones;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Invitacion", mappedBy="user")
*/
private $invitaciones;
/**
* User constructor
*/
public function __construct()
{
$this->invitaciones = new ArrayCollection();
}
public function getEmail(): ?string
{
return $this->email;
}
public function setEmail(string $email): self
{
$this->email = $email;
return $this;
}
public function getCodeinvitaciones(): ?string
{
return $this->codeinvitaciones;
}
public function setCodeinvitaciones(string $codeinvitaciones): self
{
$this->codeinvitaciones = $codeinvitaciones;
return $this;
}
/**
* @return Collection|Invitacion[]
*/
public function getInvitaciones(): Collection
{
return $this->invitaciones;
}
public function addInvitaciones(Invitacion $invitacion): self
{
if (!$this->invitaciones->contains($invitacion)) {
$this->invitaciones[] = $invitacion;
$invitacion->setCodeinvitaciones($this);
}
return $this;
}
}
应用实体Invitacion.php
class Invitacion
{
(...)
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="email")
* @ORM\JoinColumn(nullable=false)
*/
private $email;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="invitaciones")
* @ORM\JoinColumn(nullable=false)
*/
private $codeinvitaciones;
public function getId(): ?int
{
return $this->id;
}
public function getEmail(): ?User
{
return $this->email;
}
public function setEmail(?User $email): self
{
$this->email = $email;
return $this;
}
public function getCodeinvitaciones(): ?User
{
return $this->codeinvitaciones;
}
public function setCodeinvitaciones(User $codeinvitaciones): self
{
$this->codeinvitaciones = $codeinvitaciones;
return $this;
}
}
在Controller中,当在表单中注册时,我创建了用户。同时,我还存储了 电子邮件 和变量 密码邀请 表中 请柬 但它给我一个错误。
控制器
(...)
$invitacion->setEmail($email);
$invitacion->setCodeinvitaciones($registroInv);
ERROR
Argument 1 passed to App\Entity\Invitacion::setEmail() must be an instance of App\Entity\User or null,
string given, called in C:\Users\adria\Documents\app\bebeBB\src\Controller\UserController.php on line 38
谢谢
我已经试过了 Invitacion::setEmail(?string)
但它给出了这个错误。
Expected value of type "App\Entity\User" for association field
"App\Entity\Invitacion#$codeinvitaciones", got "string" instead.
正如评论中所说,setEmail(?User email)接受null或User对象作为输入。我怀疑你想在那里输入电子邮件地址,所以你可以这样做。
Setter:
setEmail(?string $email)
调用:
$user = new User();
$user->setEmail('[email protected]');
$invitacion->setEmail($user->getEmail());
或者如果你真的想添加一个完整的用户对象,因为它是。
$user = new User();
$user->setEmail('[email protected]');
$invitacion->setEmail($user);
在这两种情况下,首先要有一个用户对象。然后你就可以为你的setter访问对象或邮件。