如何修复 "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")}
* )
*/
实际上我生成了两个实体:
-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")}
* )
*/