繁体   English   中英

教义1.2多对多关系的列命名约定

[英]Doctrine 1.2 Column Naming Conventions for Many To Many Relationships

我正在使用现有的数据库架构,并尝试设置两个具有多对多关系的Doctrine模型, 如本文档所述

从头开始创建表时,我毫不费力地开始工作。 但是,现有的联接表使用与Doctrine文档中所述不同的命名约定。 特别

Table 1
--------------------------------------------------
table_1_id
....other columns....

Table 2
--------------------------------------------------
table_2_id
....other columns....

Join Table
--------------------------------------------------
fktable1_id
fktable_2_id

基本上,以前的开发人员在所有外键之前都加上了fk

从我所看到的示例和一些简短的代码实验中,似乎Doctrine 1.2 要求联接表使用与其连接的表相同的列名。

  1. 我的假设是否正确?

  2. 如果是这样,那么《学说2》中的情况是否有所改变?

  3. 如果以上任何一个的答案都是正确的,那么如何配置模型,使所有列“对齐”

您只需要设置本地和外部部分以匹配您的列名

Table1:
  columns:
    table_1_id: int
    ....
  relations:
    Table2:
      foreignAlias: FromSecond
      local: table_1_id
      foreign: fktable1_id
      refClass: JoinTable
Table2:
  columns:
    table_2_id: int
    ....
  relations:
    Table1:
      foreignAlias: FromFirst
      local: table_2_id
      foreign: fktable2_id
      refClass: JoinTable
JoinTable:
  columns:
    fktable1_id: int
    fktable2_id: int
  relations:
    Table1:
    Table2:

看看有关N:M关系的文档

当你看着

$this->hasColumn('user_id', 'integer', null, array(
                'primary' => true
            )
        );

从文档中,您将看到如何确定联接模型中的列的方式取决于您。

由于您已有数据库,为什么不通过Doctrine生成模型 API向您显示所需的选项。 我自己用过,效果很好。 如果您的结构比较复杂,有时可能需要进行一些清理,但是生成的文件是一个很好的开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM