代码之家  ›  专栏  ›  技术社区  ›  Alana Storm

原则1.2多对多关系的列命名约定

  •  0
  • Alana Storm  · 技术社区  · 14 年前

    我正在使用一个现有的数据库模式,尝试建立两个具有多对多关系的条令模型, as described in this document

    当从头开始创建表时,我可以毫不费力地实现这一点。但是,现有的联接表使用了一种不同的命名约定,这与文档中描述的命名约定不同。明确地

    Table 1
    --------------------------------------------------
    table_1_id
    ....other columns....
    
    Table 2
    --------------------------------------------------
    table_2_id
    ....other columns....
    
    Join Table
    --------------------------------------------------
    fktable1_id
    fktable_2_id
    

    fk .

    从我看到的例子和一些简短的代码实验来看,1.2条原则似乎 联接表使用与其联接的表相同的列名

    1. 我的假设正确吗?

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

    2 回复  |  直到 10 年前
        1
  •  1
  •   DrColossos    14 年前

    看一看 at the docs

    当你看着

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

    既然你有一个现有的数据库,为什么不呢 通过条令生成模型 ? 这个 API

        2
  •  1
  •   Goran Jurić    14 年前

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

    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: