I have a working OneToMany relation between my class Devis and my class Dossier.
This is my class Devis:
/**
* @ORM\Entity
* @ORM\Table(name="devis")
* @ORM\Entity(repositoryClass="App\Repository\DevisRepository")
* @ORM\HasLifecycleCallbacks
*/
class Devis extends AbstractEntity
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer", options={"unsigned"=true}, name="id_devis")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Dossier", mappedBy="devis")
*/
private $dossier;
and this is my class Dossier:
/**
* @ORM\Entity
* @ORM\Table(name="dossier")
* @ORM\Entity(repositoryClass="App\Repository\DossierRepository")
* @ORM\HasLifecycleCallbacks
*/
class Dossier extends AbstractEntity
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer", options={"unsigned"=true}, name="id_dossier")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Devis", inversedBy="dossier")
* @ORM\JoinColumn(name="id_devis", referencedColumnName="id_devis" , nullable=true)
*/
private $devis;
I'm trying to update to a ManyToMany relation.
So I updated my class Devis like this:
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Dossier", mappedBy="devis")
*/
private $dossiers;
and my class Dossier like this:
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Devis", inversedBy="dossiers")
* @ORM\JoinTable(
* name="devis_dossier",
* joinColumns={
* @ORM\JoinColumn(name="id_devis", referencedColumnName="id_devis", nullable=true)
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="id_dossier", referencedColumnName="id_dossier", nullable=true)
* }
* )
*/
private $devis;
But when I try to create my migration with php bin/console make:migration I have this error :
In MissingColumnException.php line 15:
Column name "id_devis" referenced for relation from App\Entity\Dossier towards App\Entity\Devis does not exist.
Why the id named id_devis is not found by the referencedColumnName ?
I also tried to change both referencedColumnName to "id" like that:
* joinColumns={
* @ORM\JoinColumn(name="id_devis", referencedColumnName="id", nullable=true)
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="id_dossier", referencedColumnName="id", nullable=true)
* }
With this configuration, I can create my migration but the SQL inside is false and not working:
$this->addSql('ALTER TABLE devis_dossier ADD CONSTRAINT FK_AFA67B6B65A2841B FOREIGN KEY (id_devis) REFERENCES dossier (id)');
$this->addSql('ALTER TABLE devis_dossier ADD CONSTRAINT FK_AFA67B6BE3D54947 FOREIGN KEY (id_dossier) REFERENCES devis (id)');
Because the REFERENCES (id) use for the CONSTRAINT does not exist. (only id_devis and id_dossier exist)
What can I do to make my ManyToMany relation work ?