当使用generateModelsFromDb生成模型时,Doctrine在关系表和基表之间建立一对多关系,而不是在基表本身之间生成nm关系。有没有办法让generateModelsFromDb检测到n-m关系?
答案 0 :(得分:0)
您可以使用YAML进行数据库设计。如果你想建立一个N-M关系,你需要做这样的事情(它显示了一个傻瓜的例子,关于拥有多个拥有者和拥有超过狗的狗的狗)
---
options:
type: INNODB
collate: utf8_unicode_ci
charset: utf8
Human:
columns:
id:
type: integer(4)
primary: true
autoincrement: true
name:
type: varchar(64)
notnull: true
...
...
relations:
Dogs:
foreignAlias: Humans
class: Dog
ref_class: Human_Dogs
Dog:
columns:
id:
type: integer(4)
autoincrement: true
primary: true
owner:
type: varchar(64)
notnull: true
...
...
relations:
Humans:
foreignAlias: Dogs
class: Human
ref_class: Human_Dogs
Human_Dogs:
columns:
human_id:
type: int(4)
primary: true
dog_id:
type: int(4)
primary: true
relations:
Human:
foreignAlias: Human_Dogs
Dog:
foreignAlias: Human_Dogs
那将是file.yml,所以现在你可以从这个文件生成数据库了。您可以这样做的方式很大程度上取决于您正在使用的框架或程序。无论如何,在PHP + Doctrine中有一种简单的方法:
<?php
$options = array(
'packagesPrefix' => 'Plugin',
'baseClassName' => 'MyDoctrineRecord',
'suffix' => '.php'
);
Doctrine_Core::generateModelsFromYaml('/path/to/file.yml', '/path/to/model', $options);
?>
使用正确的配置,您可以自动生成id字段。
在此链接中有一个教程 - &gt; Documentation
我希望这可以帮到你!