Bonjour à toutes et à tous,
Je m'essaye à la relation Many-To-Many sur un cas basique avec 3 entités:
- User (iduser, nom,...)
- Societe (idsociete, nom,...)
- user_societe (iduser, idsociete)
Je souhaite donc qu'un utilisateur puisse être rattaché à une ou plusieurs société.
Après avoir suivis plusieurs tuto et les docs de symfony/doctrine je me retrouve bloqué. Lorsque j'essaye d'attacher une société à un utilisateur je me retrouve avec l'erreur suivante:
Warning: oci_bind_by_name() [<a href='function.oci-bind-by-name'>function.oci-bind-by-name</a>]: Invalid variable used for bind in C:\wamp\www\php\Promocast\Symfony\vendor\doctrine-dbal\lib\Doctrine\DBAL\Driver\OCI8\OCI8Statement.php line 112
J'ai donc tenté des recherches mais aucun résultat. J'ai donc essayé de débug à la main pour essayer de voir ce qui cloche et j'ai l'impression que c'est lorsque le bind passe sur l'objet societe (à associer à l'user).
Voici ce qui fait créée l'erreur selon le stack trace:
array('column' => ':param10', 'variable' => object(PcastSociete), 'type' => '1')
Voici mon entité User (ce qui importe du moins):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| /**
* @ORM\ManyToMany(targetEntity="PcastSociete", inversedBy="users")
* @ORM\JoinTable(name="PcastLienusersociete",
* joinColumns={@ORM\JoinColumn(name="ImUser_iduser", referencedColumnName="iduser")},
* inverseJoinColumns={@ORM\JoinColumn(name="PcastLienusersociete_idsociete", referencedColumnName="idsociete")}
* )
*/
private $societes;
public function getSocietes()
{
return $this->societes;
}
public function addSociete(\Myapp\UtilisateurBundle\Entity\PcastSociete $societe)
{
$this->societes[] = $societe;
} |
Mon entité société :
1 2 3 4 5 6 7 8
| /**
* @ORM\ManyToMany(targetEntity="ImUser", mappedBy="societes")
*/
private $users;
public function __construct() {
$this->users = new \Doctrine\Common\Collections\ArrayCollection();
} |
Ma table de lien:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| <?php
namespace Myapp\UtilisateurBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Myapp\UtilisateurBundle\Entity\PcastLienusersociete
*
* @ORM\Table(name="PCAST_LIENUSERSOCIETE")
* @ORM\Entity
*/
class PcastLienusersociete
{
/**
* @var integer $idsociete
*
* @ORM\Column(name="IDSOCIETE", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
private $idsociete;
/**
* @var integer $iduser
*
* @ORM\Column(name="IDUSER", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
private $iduser;
/**
* Set iduser
*
* @param Myapp\UtilisateurBundle\Entity\ImUser $iduser
*
*/
public function setIduser(\Myapp\UtilisateurBundle\Entity\ImUser $iduser)
{
$this->iduser = $iduser;
}
/**
* Get iduser
*
* @return Myapp\UtilisateurBundle\Entity\ImUser
*/
public function getIduser()
{
return $this->iduser;
}
/**
* Set idsociete
*
* @param Myapp\UtilisateurBundle\Entity\Pcastsociete $idsociete
*/
public function setIdsociete(\Myapp\UtilisateurBundle\Entity\Pcastsociete $idsociete)
{
$this->idsociete = $idsociete;
}
/**
* Get idsociete
*
* @return Myapp\UtilisateurBundle\Entity\Pcastsociete
*/
public function getIdsociete()
{
return $this->idsociete;
}
} |
et enfin comment j'ajoute une nouvelle société à mon user (c'est un simple test):
1 2
| $test_societe = $em->getRepository('MyappUtilisateurBundle:PcastSociete')->find(49);
$newUser->addSociete($test_societe); |
En vous remerciant d'avance pour votre aide 
Cordialement,
Coussinsky
PS: Ma table de lien a été créée à la main d'où la description plus précise de la jointure dans les annotations de mon entité user.
Partager