Может ли Doctrine обнаруживать n-m отношений в БД с использованием generateModelsFromDb? - PullRequest
0 голосов
/ 13 апреля 2010

При использовании generateModelsFromDb для генерации моделей Doctrine устанавливает однозначные отношения между таблицей отношений и базовыми таблицами вместо создания отношения nm между самими базовыми таблицами. Есть ли способ, чтобы generateModelsFromDb обнаружил отношение n-m?

1 Ответ

0 голосов
/ 15 апреля 2010

Вы можете сделать свой дизайн БД, с 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.

В этой ссылке есть учебник -> Документация

Надеюсь, это поможет вам!

...