多对多关系的学说MappingException

时间:2019-06-28 18:08:51

标签: php orm doctrine mapping

Doctrine无法持久保存用户对象。

/**
 * @Entity @Table(name="user")
 */
class User
{
    /** @Id @Column(type="integer") @GeneratedValue **/
    protected $id;

    /** @Column(type="string") **/
    public $Name;

    /** @Column(type="string") **/
    public $Picture;

    /** @Column(type="string", length=50) **/
    public $Phone;

    /** @Column(type="date") **/
    public $Birthdate;

    /**
     * @OneToMany(targetEntity="project", mappedBy="Owner")
     */
    public $Projects;

    /**
     * @OneToOne(targetEntity="user")
     * @JoinColumn(name="credentials_id", referencedColumnName="id")
     */
    public $Credentials;
    /**
     * @OneToMany(targetEntity="skill", mappedBy="User_id")
    */
    public $Experiences;    

    /** @Column(type="string", length=2500) **/
    public $Motivation;

    /** @Column(type="string", length=2500) **/
    public $SoftSkills;

    /** @Column(type="string") **/
    public $Profession;

    /** @Column(type="string") **/
    public $EducationDegree;


    public function __construct()
    {

    }

    public function getId()
    {
        return $this->id;
    }    
}

在对实体管理器进行此调用之后,它将引发MappingException。

$this->entityManager->persist($this->user);

  

致命错误:未捕获的学说\ ORM \ Mapping \ MappingException:   在以下位置找不到目标实体Businessrelations \ Database \ project   'Businessrelations \ Database \ User#Projects

但是目前还没有注册项目。我是否必须以某种方式将其标记为可选?我还想知道用户和项目之间的“#”是什么意思。有人知道吗?

编辑

我按照相关主题中的建议将targetEntity属性更改为完全合格的类名。

我在github上找到了相应的源代码: https://github.com/doctrine/orm/blob/e1bb9e005d2676c42ec19521db9569a28da179d3/lib/Doctrine/ORM/Mapping/MappingException.php

0 个答案:

没有答案