Details
Description
Hello guys, sorry for the bad English found the error during a necessity and would like to post the solution.
Below is an example of my yml relationamento a many to many.
manyToMany:
centroCustos:
targetEntity: Album\Entity\CentroCusto
cascade: ["persist", "merge"]
inversedBy: unidades
joinTable:
name: unidade_centro_custo
joinColumns:
idunidade:
referencedColumnName: idunidade
onDelete: cascade
inverseJoinColumns:
idcentrocusto:
referencedColumnName: idcentrocusto
idpais:
referencedColumnName: idpais
idmundo:
referencedColumnName: idmundo
onDelete: cascade
Well this example is generating this code.
/**
- @var \Doctrine\Common\Collections\ArrayCollection
* - @ORM\ManyToMany(targetEntity="Album\Entity\CentroCusto", inversedBy="unidades", cascade=
{"persist","merge"}
)
- @ORM\JoinTable(name="unidade_centro_custo",
- joinColumns=
{
* @ORM\JoinColumn(name="idunidade", referencedColumnName="idunidade", onDelete="cascade")
* }
,
- inverseJoinColumns= { * @ORM\JoinColumn(name="idcentrocusto", referencedColumnName="idcentrocusto") * @ORM\JoinColumn(name="idpais", referencedColumnName="idpais") * @ORM\JoinColumn(name="idmundo", referencedColumnName="idmundo", onDelete="cascade") * }
- )
*/
Notice that Doctrine 2 is not putting commas to separate JoinColumns.
So looking at the source code I found the following code and put it solved my problem.
The changes was performed in EntityGenerator.php line 1090.
$arrJoins = array();
foreach ($associationMapping['joinTable']['joinColumns'] as $joinColumn)
$lines[] = implode(",". PHP_EOL, $arrJoins);
$lines[] = $this->spaces . ' * },';
$lines[] = $this->spaces . ' * inverseJoinColumns={';
$arrJoinsInverse = array();
foreach ($associationMapping['joinTable']['inverseJoinColumns'] as $joinColumn)
$lines[] = implode(",". PHP_EOL, $arrJoinsInverse);
$lines[] = $this->spaces . ' * }';
$lines[] = $this->spaces . ' * )'; }
I hope you understand what I'm trying to say, for you do not know if this error occurred, but if there ocorrei is one possible solution.
Thank you.