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

        Show
        Fabio B. Silva added a comment - Fixed by : https://github.com/doctrine/doctrine2/commit/2c0feb2a46a7cf97dc2878e6214924c3ffdbce67

          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: