Php 生成具有复合主键的实体时出错

Php 生成具有复合主键的实体时出错,php,sql,symfony,doctrine,Php,Sql,Symfony,Doctrine,今天我意识到我丢失了一个实体。我生成了XML元数据,然后生成了实体。我尝试重新生成实体,但仍然没有成功地重新生成它 该实体具有复合主键。这把钥匙的每一部分实际上都是外国钥匙 SQL: CREATE TABLE lajki ( _wydarzenie_id INT NOT NULL, _uzytkownik_id INT NOT NULL, _lajk_data DATETIME NOT NULL, PRIMARY KEY (_wydarzenie_id, _uzy

今天我意识到我丢失了一个实体。我生成了XML元数据,然后生成了实体。我尝试重新生成实体,但仍然没有成功地重新生成它

该实体具有复合主键。这把钥匙的每一部分实际上都是外国钥匙

SQL:

CREATE TABLE lajki (
    _wydarzenie_id INT NOT NULL,
    _uzytkownik_id INT NOT NULL,
    _lajk_data DATETIME NOT NULL,
    PRIMARY KEY (_wydarzenie_id, _uzytkownik_id),
    FOREIGN KEY (_uzytkownik_id) REFERENCES uzytkownicy(_uzytkownik_id),
    FOREIGN KEY (_wydarzenie_id) REFERENCES wydarzenia(_wydarzenie_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;
XML元数据:

<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" 
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                  xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
  <entity name="Lajki" table="lajki">
    <change-tracking-policy>DEFERRED_IMPLICIT</change-tracking-policy>
    <id name="wydarzenieId" type="integer" column="_wydarzenie_id"/>
    <id name="uzytkownikId" type="integer" column="_uzytkownik_id"/>
    <field name="lajkData" type="datetime" column="_lajk_data"/>
    <lifecycle-callbacks/>
  </entity>
</doctrine-mapping>

延迟的隐式

我该怎么做才能让它工作?我是自己写实体,还是只需要修改一些东西?

我想你说的是从注释生成类和代理的实体。一般来说,这个工具不是很好。它在继承方面有很多问题,在您的例子中,复合(而不是双)键似乎也有很多问题

尝试手动更正实体类中的注释,不要使用该工具。如果您非常想使用它,请仅在第一次生成所有内容,纠正工具无法解决的错误,并忘记曾经存在的工具:)

顺便说一句,虽然条令支持复合密钥,但不鼓励使用它们。因此,如果它们不是真正必要的,就不要使用它们。请参阅。

您所说的“但我仍然没有成功地重新生成它”是什么意思?如何“重新生成实体”?