Doctrine 2 - ORM
  1. Doctrine 2 - ORM
  2. DDC-2079

Error in build entities using yml with several inversedJoinColumns

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Critical Critical
    • Resolution: Fixed
    • Affects Version/s: 2.3
    • Fix Version/s: 2.3.1
    • Component/s: Tools
    • Security Level: All
    • Labels:
      None
    • Environment:
      windows 7/php 5.3/apache 2.2

      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)

      { $arrJoins[] = $this->spaces . ' * ' . $this->generateJoinColumnAnnotation($joinColumn); }

      $lines[] = implode(",". PHP_EOL, $arrJoins);
      $lines[] = $this->spaces . ' * },';
      $lines[] = $this->spaces . ' * inverseJoinColumns={';

      $arrJoinsInverse = array();
      foreach ($associationMapping['joinTable']['inverseJoinColumns'] as $joinColumn)

      { $arrJoinsInverse[] = $this->spaces . ' * ' . $this->generateJoinColumnAnnotation($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.

        Activity

          People

          • Assignee:
            Fabio B. Silva
            Reporter:
            André Antônio Lemos de Moraes
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: