我无法自动将用户 ID 添加到它的创建中 - Symfony 5
I can't add automatically a user ID to it's creation - Symfony 5
所以,这是我的问题:我想在我的项目中创建一个宠物配置文件,一切正常,直到我想添加一些基本信息,属性 用户(创建该配置文件的用户)
我想添加当前用户的 ID 但我卡住了...
首先是我的错误提示:
Unable to guess how to get a Doctrine instance from the request
information for parameter "user".
然后,Animal.php上有我的代码:
/**
* @ORM\OneToMany(targetEntity="App\Entity\User", mappedBy="ownedAnimal", orphanRemoval=true, cascade={"persist"})
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @return mixed
*/
public function getUser()
{
return $this->user;
}
/**
* @param User $user
* @return Animal
*/
public function setUser(User $user): Animal
{
$this->user = $user->getId();
return $this;
}
在我的 User.php 中:
/**
* @ORM\ManyToOne(targetEntity=Animal::class, inversedBy="user")
*/
private $ownedAnimal;
public function __construct()
{
$this->ownedAnimal = new ArrayCollection();
}
/**
* @return Collection|Animal[]
*/
public function getOwnedAnimal(): Collection
{
return $this->ownedAnimal;
}
public function addOwnedAnimal(Animal $ownedAnimal): self
{
if (!$this->ownedAnimal->contains($ownedAnimal)) {
$this->ownedAnimal[] = $ownedAnimal;
$ownedAnimal->setUser($this);
}
return $this;
}
public function removeOwnedAnimal(Animal $ownedAnimal): self
{
if ($this->ownedAnimal->removeElement($ownedAnimal)) {
// set the owning side to null (unless already changed)
if ($ownedAnimal->getUser() === $this) {
$ownedAnimal->setUser(null);
}
}
return $this;
}
所以,当我尝试提交新 Animal 的注册时,出现了上面的错误...看起来很愚蠢,但我找不到解决方案...
请帮帮我:)
您的用户 属性 应该是 User 的一个实例。您应该为它设置一个用户,而不是用户 ID。
这部灵魂作品。
/**
* @param User $user
* @return Animal
*/
public function setUser(User $user): Animal
{
$this->user = $user;
return $this;
}
您可以在控制器内部的添加功能中执行此操作,因为在控制器内部您可以访问当前用户:
public function create()
{
$animal = new Animal();
// .......
if($fom->isSubmitted() && $fom->isValid())
{
$animal->setUser($this->getUser());
// persit and flush
}
}
所以,这是我的问题:我想在我的项目中创建一个宠物配置文件,一切正常,直到我想添加一些基本信息,属性 用户(创建该配置文件的用户)
我想添加当前用户的 ID 但我卡住了...
首先是我的错误提示:
Unable to guess how to get a Doctrine instance from the request information for parameter "user".
然后,Animal.php上有我的代码:
/**
* @ORM\OneToMany(targetEntity="App\Entity\User", mappedBy="ownedAnimal", orphanRemoval=true, cascade={"persist"})
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @return mixed
*/
public function getUser()
{
return $this->user;
}
/**
* @param User $user
* @return Animal
*/
public function setUser(User $user): Animal
{
$this->user = $user->getId();
return $this;
}
在我的 User.php 中:
/**
* @ORM\ManyToOne(targetEntity=Animal::class, inversedBy="user")
*/
private $ownedAnimal;
public function __construct()
{
$this->ownedAnimal = new ArrayCollection();
}
/**
* @return Collection|Animal[]
*/
public function getOwnedAnimal(): Collection
{
return $this->ownedAnimal;
}
public function addOwnedAnimal(Animal $ownedAnimal): self
{
if (!$this->ownedAnimal->contains($ownedAnimal)) {
$this->ownedAnimal[] = $ownedAnimal;
$ownedAnimal->setUser($this);
}
return $this;
}
public function removeOwnedAnimal(Animal $ownedAnimal): self
{
if ($this->ownedAnimal->removeElement($ownedAnimal)) {
// set the owning side to null (unless already changed)
if ($ownedAnimal->getUser() === $this) {
$ownedAnimal->setUser(null);
}
}
return $this;
}
所以,当我尝试提交新 Animal 的注册时,出现了上面的错误...看起来很愚蠢,但我找不到解决方案...
请帮帮我:)
您的用户 属性 应该是 User 的一个实例。您应该为它设置一个用户,而不是用户 ID。
这部灵魂作品。
/**
* @param User $user
* @return Animal
*/
public function setUser(User $user): Animal
{
$this->user = $user;
return $this;
}
您可以在控制器内部的添加功能中执行此操作,因为在控制器内部您可以访问当前用户:
public function create()
{
$animal = new Animal();
// .......
if($fom->isSubmitted() && $fom->isValid())
{
$animal->setUser($this->getUser());
// persit and flush
}
}