教义2挑战,我有一对多,但不是多对一,


Doctrine2 challenge, I Have OneToMany, but NOT ManyToOne,

有一个消息传递系统,其中消息可以属于咨询,但它不必。所有咨询都有 1 条或多条消息......

我的实体是由教义自动生成的,但vendor/bin/doctrine-module orm:validate-schema惨败了......

vendor/bin/doctrine-module orm:validate-schema
[Mapping]  FAIL - The entity-class 'Legetimen'Entity'Konsultasjon' mapping is invalid:
* The association Legetimen'Entity'Konsultasjon#meldinger refers to the owning side field Legetimen'Entity'Meldinger#konsulatsjon which is not defined as association, but as field.
* The association Legetimen'Entity'Konsultasjon#meldinger refers to the owning side field Legetimen'Entity'Meldinger#konsulatsjon which does not exist.
[Database] FAIL - The database schema is not in sync with the current mapping file.

有关协会的定义:从消息/混合器:

/**
 * @var integer
 *
 * @ORM'Column(name="konsulatsjon", type="integer", precision=0, scale=0, nullable=true, unique=false)
 * @ORM'ManyToOne(targetEntity="Konsultasjon", inversedBy="konsultasjonid")
 */
 private $konsulatsjon;

来自我的"家长"咨询Konsultasjon:

 /**
 * @var 'Doctrine'Common'Collections'Collection
 *
 * @ORM'OneToMany(targetEntity="Legetimen'Entity'Meldinger", mappedBy="konsulatsjon", cascade={"persist"}, fetch="EAGER")
 */
 private $meldinger;

我的 konsultasjon 映射了外部触发器,但没有映射我的消息(因为许多 konsultasjon 都是 NULL)。

此外,我对拼写也无能为力,因为这是一个遗留且相当混乱的应用程序......

如果您需要其他任何帮助,

请告诉我,任何帮助将不胜感激。

[编辑]删除了评论中提到的消息(Meldinger)中的@var和@collumn,最终得到以下结果:

  vendor/bin/doctrine-module orm:validate-schema
[Mapping]  FAIL - The entity-class 'Legetimen'Entity'Konsultasjon' mapping is invalid:
* The mappings Legetimen'Entity'Konsultasjon#meldinger and Legetimen'Entity'Meldinger#konsulatsjon are inconsistent with each other.
[Mapping]  FAIL - The entity-class 'Legetimen'Entity'Meldinger' mapping is invalid:
* The association Legetimen'Entity'Meldinger#konsulatsjon refers to the inverse side field Legetimen'Entity'Konsultasjon#konsultasjonid which is not defined as association.
* The association Legetimen'Entity'Meldinger#konsulatsjon refers to the inverse side field Legetimen'Entity'Konsultasjon#konsultasjonid which does not exist.
* The referenced column name 'id' has to be a primary key column on the target entity class 'Legetimen'Entity'Konsultasjon'.
  [Doctrine'ORM'ORMException]
  Column name `id` referenced for relation from Legetimen'Entity'Meldinger towards Legetimen'Entity'Konsultasjon does not exist.
orm:validate-schema

Konsultasjon ID:

 /**
 * @var integer
 *
 * @ORM'Column(name="konsultasjonid", type="integer", precision=0, scale=0, nullable=false,          unique=false)
 * @ORM'Id
 * @ORM'GeneratedValue(strategy="IDENTITY")
 */
 private $konsultasjonid;

消息 ID/混合器

/**
 * @var integer
 *
 * @ORM'Column(name="meldingerid", type="integer", precision=0, scale=0, nullable=false, unique=false)
 * @ORM'Id
 * @ORM'GeneratedValue(strategy="IDENTITY")
 */
 private $meldingerid;
如果不使用

$id 作为实体的主键,则必须使用JoinColumn注释来配置实体之间的关系。加入列。

如果要更改关系属性的列名,则需要使用JoinColumn而不是Column注释。

class Meldinger { 
    /**
     * @var integer
     *
     * @ORM'Column(name="meldingerid", type="integer", precision=0, scale=0, nullable=false, unique=false)
     * @ORM'Id
     * @ORM'GeneratedValue(strategy="IDENTITY")
     */
     private $meldingerid;
     /**
      * @var integer
      *
      * @ORM'ManyToOne(targetEntity="Konsultasjon", inversedBy="meldinger")
      * @JoinColumn(name="konsulatsjon", referencedColumnName="konsulatsjonid")
      */
     private $konsulatsjon;
 }
 class Konsultasjon { 
    /**
     * @var integer
     *
     * @ORM'Column(name="konsultasjonid", type="integer", precision=0, scale=0, nullable=false, unique=false)
     * @ORM'Id
     * @ORM'GeneratedValue(strategy="IDENTITY")
     */
    private $konsultasjonid;
    /**
     * @var 'Doctrine'Common'Collections'Collection
     *
     * @ORM'OneToMany(targetEntity="Legetimen'Entity'Meldinger", mappedBy="konsulatsjon", cascade={"persist"}, fetch="EAGER") 
     * @JoinColumn(name="meldinger", referencedColumnName="meldingerid")
     */
    private $meldinger;
 }

附言。
我还更正了Meldinger@ManyToOne参数。