У меня странная проблема в Symfony 3.4
Я проясняю ситуацию: у меня есть две сущности:
UserType и Package .Цель состоит в том, чтобы предлагать пакеты моим пользователям в зависимости от их типа (пользователи будут видеть пакеты, соответствующие их типу пользователя).
Пакет может принадлежать более чем одному типу пользователя, и тип пользователя можету меня несколько пакетов.
Итак, у меня есть отношение ManyToMany.
TypeUser.php
namespace Site\PagesBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* TypeUser
*
* @ORM\Table(name="type_user")
* @ORM\Entity(repositoryClass="Site\PagesBundle\Repository\TypeUserRepository")
*/
class TypeUser
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="typeUtilisateur", type="string", length=255)
*/
private $typeUtilisateur;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set typeUtilisateur
*
* @param string $typeUtilisateur
*
* @return TypeUser
*/
public function setTypeUtilisateur($typeUtilisateur)
{
$this->typeUtilisateur = $typeUtilisateur;
return $this;
}
/**
* Get typeUtilisateur
*
* @return string
*/
public function getTypeUtilisateur()
{
return $this->typeUtilisateur;
}
}
Paquet.php:
<?php
namespace Site\PagesBundle\Entity;
//use
/**
* Paquet
*
* @ORM\Table(name="paquet")
* @ORM\Entity(repositoryClass="Site\PagesBundle\Repository\PaquetRepository")
* @Vich\Uploadable
*/
class Paquet
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var \Doctrine\Common\Collections\Collection
* @ORM\ManyToMany(targetEntity="TypeUser")
* @ORM\JoinTable(name="Packages_des_TypesUser")
* @ORM\JoinColumn(nullable=false)
*/
private $typeUser;
public function __construct()
{
$this->typeUser = new ArrayCollection();
}
/**
* Get TypeUser
*
* @return Site\PagesBundle\Entity\TypeUser
*/
public function getTypeUser()
{
return $this->typeUser;
}
public function deleteTypeFromTypesUser(TypeUser $type)
{
$this->typeUser->removeElement($type);
}
/**
* Set typeUser
*
* @param Site\PagesBundle\Entity\TypeUser $typeUser
*
* @return Paquet
*/
public function setTypeUser(Site\PagesBundle\Entity\TypeUser $typeUser)
{
$this->typeUser = $typeUser;
return $this;
}
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
}
Итак, когда я добавляю пакет, я могу выбрать пользователя TypeUser:
А когда я управляю пакетами:
Теперь, если я хочу изменить пакет, добавив тип пользователя, возникнет проблема:
У меня естьпакет: Давайте добавим нового TypeUser, нажав на «Модификатор»
Давайте проверим «DAFPIC»:
Хорошо, у меня есть пакет, который тоже есть в DAFPIC, с новой строкой в моей ассоциации в базе данных:
Но теперь, еслиЯ нажимаю «Supprimer» в новом пакете DAFPIC, и, если я дам дамп TypeUser этого пакета, я получу первого пользователя typeUser:
Итак, яне понимаю, в чём дело ... Может кто-нибудь помочь мне, пожалуйста?
РЕДАКТИРОВАТЬ:
Когда я нажимаю кнопку удаления:
/**
* Suppression d'un package | Suppression d'un type d'utilisateur attribué à un package
*
* @Route("/{id}/{type}/delete", name="paquets_delete")
*/
public function deleteAction(Request $request, $id, $type)
{
$em = $this->getDoctrine()->getManager();
$unPaquet = $em->getRepository('PagesBundle:Paquet')->find($id); //Récupération du package
$leType = $em->getRepository('PagesBundle:TypeUser')->findOneByTypeUtilisateur($type);
dump($leType);
$em->remove($unPaquet);
return $this->redirectToRoute('paquets_index'); // Actualisation de la page
}
РЕДАКТИРОВАТЬ: взятьпосмотрите на мою схему: