我使用doctrine ORM来生成一对多的双向关联,但是当我执行orm:validation-scheme命令时,这会显示下面的mesaje:
" C:\ xampp \ htdocs \ Gestor \ vendor \ bin> doctrine-module orm:validate-schema [Mapping] FAIL - 实体类' Empleados \ Entity \ TipoDocumento'映射是我 NVALID: *协会Empleados \ Entity \ TipoDocumento#empleados指的是拥有 侧场Empleados \ Entity \ Empleado#tipodocumento不存在。
[数据库]失败 - 数据库架构与当前映射fi不同步 乐"
代码: Empleado类(多对一)
<?php
namespace Empleados\Entity;
use Doctrine\Common\Collections\ArrayCollection as Collection;
use Empresas\Entity\Empresa;
use Empleados\Entity\TipoDocumento;
use Doctrine\ORM\Mapping as ORM;
use Documentos\Entity\Documentacion_Empleado;
/**
* @ORM\Entity
* @ORM\Table(name="empleado")
*
*/
class Empleado
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string",length=30,nullable=false,unique=true)
*/
private $nro_documento;
/*
* @ORM\ManyToOne(targetEntity="Empleados\Entity\TipoDocumento",inversedBy="empleados")
* @ORM\JoinColumn(name="tipodocumento_id", referencedColumnName="id")
*/
private $tipodocumento;
//...
}
TipoDocumento类(一对多):
<?php
// yes, the class are in the same namespace "Empleados"
namespace Empleados\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Empleados\Entity\Empleado;
/**
* @ORM\Entity
* @ORM\Table(name="tipo_documento")
*/
class TipoDocumento
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="Empleados\Entity\Empleado", mappedBy="tipodocumento"))
*/
private $empleados;
//.....
public function __construct()
{
$this->empleados = new ArrayCollection();
}
}
我基于http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html
中的Doctrine文档示例答案 0 :(得分:0)
在课程 TipoDocumento
中,private $empleados;
应为private $empleado;
。
修改强> 对不起,我正在查看文档中的错误位置。
多对一在那里有复数。它还包含以下内容:
public function __construct() {
$this->empleados = new ArrayCollection();
}
我无法判断你的班级是否包含此功能。
答案 1 :(得分:0)
jmarkmurphy感谢您的帮助。 问题出现在“TipoDocumento”类的camelcase中,由于某些原因,Doctrine不喜欢camelcase ...我所做的是将类重命名为Tipo_documento并且随着更改,一切都开始正常工作。