Php Symfony 3-原则2.5复合主键未导入

Php Symfony 3-原则2.5复合主键未导入,php,mysql,doctrine-orm,symfony,Php,Mysql,Doctrine Orm,Symfony,我正在尝试使用复合键进行映射:导入。 问题是没有导入具有复合键的表 以下是sql示例: CREATE DATABASE composite_key; USE composite_key; CREATE TABLE company ( id_company INT NOT NULL AUTO_INCREMENT, name VARCHAR(200) NULL, PRIMARY KEY (id_company) ); CREATE TABLE users ( i

我正在尝试使用复合键进行映射:导入。
问题是没有导入具有复合键的表

以下是sql示例:

CREATE DATABASE composite_key;
USE composite_key;

CREATE TABLE company (
    id_company INT NOT NULL  AUTO_INCREMENT,
    name VARCHAR(200) NULL,
    PRIMARY KEY (id_company)
);

CREATE TABLE users (
    id_user INT NOT NULL  AUTO_INCREMENT,
    name VARCHAR(200) null,
    PRIMARY KEY (id_user)
);

CREATE TABLE reference (
    id_company INT NOT NULL,
    id_user INT NOT NULL,
    PRIMARY KEY (id_company,id_user),
    FOREIGN KEY (id_company) REFERENCES company(id_company),
    FOREIGN KEY (id_user) REFERENCES users(id_user)
); 

INSERT INTO users (`name`) VALUES ('test1');
INSERT INTO users (`name`) VALUES ('test2');
INSERT INTO users (`name`) VALUES ('test3');

INSERT INTO company (`name`) VALUES ('company1');
INSERT INTO company (`name`) VALUES ('company2');
INSERT INTO company (`name`) VALUES ('company3');

INSERT INTO reference (`id_company`,`id_user`) VALUES (1,1);
INSERT INTO reference (`id_company`,`id_user`) VALUES (2,2);
INSERT INTO reference (`id_company`,`id_user`) VALUES (3,3);
结果执行查询

在此之后,我创建了一个新的Symfony项目,没有任何问题。然后我用下一个命令进行导入

生成数据

php bin/console generate:bundle --namespace=CompositeBundle --format=yml
php bin/console doctrine:mapping:import CompositeBundle
php bin/console doctrine:generate:entities CompositeBundle
最后我们得到了结果:

它只创建用户和公司实体

有人知道这是为什么吗


如果您需要实体和yml,我将发布它们。我现在不发布它们,因为帖子越来越长。

只是想:我倾向于使用标准的
id
作为主键,而不是使用复合键。我会为你的复合键创建一个唯一的索引,并根据需要将其用于查找等。这样,ORM很高兴,我可以在需要时使用复合键进行查询。i、 e.我和ORM之间没有冲突/挫折。我喜欢这样。外键关系非常有效,因为它们使用数据库维护的id。有时我会额外测试“复合键”。我不介意,我是这么想的。但我不认为这是写这些表格的正确形式。我的意思是,如果我能做得更好,我会在简单方法之前尝试复杂形式。问题是主键也有隐式约束,比如唯一性。您不能使
id\u user
id\u company
单独唯一,因为两者可以出现多次;但是,特定对
id\u用户
+
id\u公司
的组合不能。这就是为什么我不喜欢在这些情况下使用自动增量键。如果您不太小心,可能会将同一关系插入两次。只是想:我倾向于使用标准的
id
作为主键,而不是使用复合键。我会为你的复合键创建一个唯一的索引,并根据需要将其用于查找等。这样,ORM很高兴,我可以在需要时使用复合键进行查询。i、 e.我和ORM之间没有冲突/挫折。我喜欢这样。外键关系非常有效,因为它们使用数据库维护的id。有时我会额外测试“复合键”。我不介意,我是这么想的。但我不认为这是写这些表格的正确形式。我的意思是,如果我能做得更好,我会在简单方法之前尝试复杂形式。问题是主键也有隐式约束,比如唯一性。您不能使
id\u user
id\u company
单独唯一,因为两者可以出现多次;但是,特定对
id\u用户
+
id\u公司
的组合不能。这就是为什么我不喜欢在这些情况下使用自动增量键。如果你不是很小心,你可能会插入相同的关系两次。