如何从symfony原则中的多对多关系第三表中提取数据

如何从symfony原则中的多对多关系第三表中提取数据,symfony,doctrine,Symfony,Doctrine,我有一个中间表,充当其他两个表之间的轴心:user、punto_suministro和table pivot user_punto_suministro: /** * @ORM\Entity(repositoryClass=PuntoSuministroRepository::class) */ class PuntoSuministro { /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(ty

我有一个中间表,充当其他两个表之间的轴心:user、punto_suministro和table pivot user_punto_suministro:

/**
 * @ORM\Entity(repositoryClass=PuntoSuministroRepository::class)
 */
class PuntoSuministro
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    ...

    /**
     * @ORM\OneToMany(targetEntity=UserPuntoSuministro::class, mappedBy="punto_suministro")
     */
    private $userPuntoSuministros;

    public function __construct()
    {
        $this->userPuntoSuministros = new ArrayCollection();
    }


    /**
     * @return Collection|UserPuntoSuministro[]
     */
    public function getUserPuntoSuministros(): Collection
    {
        return $this->userPuntoSuministros;
    }

    public function addUserPuntoSuministro(UserPuntoSuministro $userPuntoSuministro): self
    {
        if (!$this->userPuntoSuministros->contains($userPuntoSuministro)) {
            $this->userPuntoSuministros[] = $userPuntoSuministro;
            $userPuntoSuministro->setPuntoSuministro($this);
        }

        return $this;
    }

    public function removeUserPuntoSuministro(UserPuntoSuministro $userPuntoSuministro): self
    {
        if ($this->userPuntoSuministros->contains($userPuntoSuministro)) {
            $this->userPuntoSuministros->removeElement($userPuntoSuministro);
            // set the owning side to null (unless already changed)
            if ($userPuntoSuministro->getPuntoSuministro() === $this) {
                $userPuntoSuministro->setPuntoSuministro(null);
            }
        }

        return $this;
    }

如何将数据从表用户提取到表punto_suministro

实体用户:

/**
 * @ORM\Entity(repositoryClass=UserRepository::class)
 */
class User implements UserInterface
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    .....
    

    /**
     * @ORM\OneToMany(targetEntity=UserPuntoSuministro::class, mappedBy="user")
     */
    private $userPuntoSuministros;

    /**
     * @throws \Exception
     */
    public function __construct()
    {
        $this->puntoSuministros = new ArrayCollection();
        $this->userPuntoSuministros = new ArrayCollection();
    }



    /**
     * @return Collection|UserPuntoSuministro[]
     */
    public function getUserPuntoSuministros(): Collection
    {
        return $this->userPuntoSuministros;
    }

    public function addUserPuntoSuministro(UserPuntoSuministro $userPuntoSuministro): self
    {
        if (!$this->userPuntoSuministros->contains($userPuntoSuministro)) {
            $this->userPuntoSuministros[] = $userPuntoSuministro;
            $userPuntoSuministro->setUser($this);
        }

        return $this;
    }

    public function removeUserPuntoSuministro(UserPuntoSuministro $userPuntoSuministro): self
    {
        if ($this->userPuntoSuministros->contains($userPuntoSuministro)) {
            $this->userPuntoSuministros->removeElement($userPuntoSuministro);
            // set the owning side to null (unless already changed)
            if ($userPuntoSuministro->getUser() === $this) {
                $userPuntoSuministro->setUser(null);
            }
        }

        return $this;
    }
实体PuntoSuministro:

/**
 * @ORM\Entity(repositoryClass=PuntoSuministroRepository::class)
 */
class PuntoSuministro
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    ...

    /**
     * @ORM\OneToMany(targetEntity=UserPuntoSuministro::class, mappedBy="punto_suministro")
     */
    private $userPuntoSuministros;

    public function __construct()
    {
        $this->userPuntoSuministros = new ArrayCollection();
    }


    /**
     * @return Collection|UserPuntoSuministro[]
     */
    public function getUserPuntoSuministros(): Collection
    {
        return $this->userPuntoSuministros;
    }

    public function addUserPuntoSuministro(UserPuntoSuministro $userPuntoSuministro): self
    {
        if (!$this->userPuntoSuministros->contains($userPuntoSuministro)) {
            $this->userPuntoSuministros[] = $userPuntoSuministro;
            $userPuntoSuministro->setPuntoSuministro($this);
        }

        return $this;
    }

    public function removeUserPuntoSuministro(UserPuntoSuministro $userPuntoSuministro): self
    {
        if ($this->userPuntoSuministros->contains($userPuntoSuministro)) {
            $this->userPuntoSuministros->removeElement($userPuntoSuministro);
            // set the owning side to null (unless already changed)
            if ($userPuntoSuministro->getPuntoSuministro() === $this) {
                $userPuntoSuministro->setPuntoSuministro(null);
            }
        }

        return $this;
    }
实体用户puntosuministro(表透视):

我尝试按如下方式访问:

    $user = $userRepository->find($this->security->getUser());
    $pivote = $user->getUserPuntoSuministros();
但从这里我不知道如何恢复用户的punto_suministro,并将其显示在细枝上


提前感谢。

在简单的情况下,您可以迭代
$user->getUserPuntoSuministros()
并获取具体的
punto_suministro

$user = $userRepository->find($this->security->getUser());
$puntoSuministros = []; // contains PuntoSuministro's of User

foreach ($user->getUserPuntoSuministros() as $userPuntoSuministro) {
    $puntoSuministros[] = $userPuntoSuministro->getPuntoSuministro();
}