如何修复 "Could not resolve type of column "id" of class "RelacionesBundle\Entity\Pregunta""?

How to fix "Could not resolve type of column "id" of class "RelacionesBundle\Entity\Pregunta""?

实际上我生成了两个实体:
-Preguntas -地区

我正在尝试在这两个实体之间建立多对多关系。
在我的数据库中,我已经有 3 个表:
-Pregunta (idPregunta,Titulo)
-Area (idArea,Nombre)
-areas_preguntas (idArea, idPregunta)

这些是我的实体:
面积:

<?php

namespace RelacionesBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Class Area
 *
 * @ORM\Entity
 * 
 * @ORM\Table(name="area")
 * 
 */
class Area
{
    /**
     * @var int
     *
     * @ORM\Column(name="idArea", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="nombre", type="string", length=255)
     */
    private $nombre;

    /**
     * @ORM\ManyToMany(targetEntity="Pregunta", mappedBy="areas")
     */
    private $preguntas;


    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set nombre
     *
     * @param string $nombre
     *
     * @return Area
     */
    public function setNombre($nombre)
    {
        $this->nombre = $nombre;

        return $this;
    }

    /**
     * Get nombre
     *
     * @return string
     */
    public function getNombre()
    {
        return $this->nombre;
    }
    /**
     * Constructor
     */
    public function __construct()
    {
        $this->preguntas = new \Doctrine\Common\Collections\ArrayCollection();
    }

    /**
     * Add pregunta
     *
     * @param \RelacionesBundle\Entity\Pregunta $pregunta
     *
     * @return Area
     */
    public function addPregunta(\RelacionesBundle\Entity\Pregunta $pregunta)
    {
        $this->preguntas[] = $pregunta;

        return $this;
    }

    /**
     * Remove pregunta
     *
     * @param \RelacionesBundle\Entity\Pregunta $pregunta
     */
    public function removePregunta(\RelacionesBundle\Entity\Pregunta $pregunta)
    {
        $this->preguntas->removeElement($pregunta);
    }

    /**
     * Get preguntas
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getPreguntas()
    {
        return $this->preguntas;
    }

    public function __toString(){
        return $this->nombre;
    }
}


普雷贡塔:

<?php

namespace RelacionesBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Class Pregunta
 *
 * @ORM\Entity
 * 
 * @ORM\Table(name="pregunta")
 *
 */
class Pregunta
{
    /**
     * @var int
     *
     * @ORM\Column(name="idPregunta", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $idPregunta;

    /**
     * @var string
     *
     * @ORM\Column(name="titulo", type="string", length=255)
     */
    private $titulo;

     /**
     * @ORM\ManyToMany(targetEntity="Area", inversedBy="areas")
     * @ORM\JoinTable(name="areas_preguntas")
     */
    private $areas;


    /**
     * Get idPregunta
     *
     * @return integer
     */
    public function getId()
    {
        return $this->idPregunta;
    }

    /**
     * Set titulo
     *
     * @param string $titulo
     *
     * @return Pregunta
     */
    public function setTitulo($titulo)
    {
        $this->titulo = $titulo;

        return $this;
    }

    /**
     * Get titulo
     *
     * @return string
     */
    public function getTitulo()
    {
        return $this->titulo;
    }
    /**
     * Constructor
     */
    public function __construct()
    {
        $this->areas = new \Doctrine\Common\Collections\ArrayCollection();
    }

    /**
     * Add area
     *
     * @param \RelacionesBundle\Entity\Area $area
     *
     * @return Pregunta
     */
    public function addArea(\RelacionesBundle\Entity\Area $area)
    {
        $this->areas[] = $area;

        return $this;
    }

    /**
     * Remove area
     *
     * @param \RelacionesBundle\Entity\Area $area
     */
    public function removeArea(\RelacionesBundle\Entity\Area $area)
    {
        $this->areas->removeElement($area);
    }

    /**
     * Get areas
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getAreas()
    {
        return $this->areas;
    }

    public function __toString(){
        return $this->titulo;
    }
}


实际上一切正常,问题是当我提交 Pregunta 表格时,我收到了那个错误。
有什么建议吗?或者有什么问题?

看起来默认情况下 doctrine 正在为 JoinTable 寻找名称为 id 的字段。尝试将 JoinTable 更改为

    /**
     * @ORM\JoinTable(name="areas_preguntas",
     *      joinColumns={@ORM\JoinColumn(name="pregunta_id", referencedColumnName="idPregunta")},
     *      inverseJoinColumns={@ORMJoinColumn(name="area_id", referencedColumnName="idArea")}
     *      )
     */