代码之家  ›  专栏  ›  技术社区  ›  Elzo Valugi

学说中的关系

  •  1
  • Elzo Valugi  · 技术社区  · 14 年前

    ZF有一个非常好的特性,叫做 它直接从MN连接返回对象的集合。MN的全部目的是从另一个表中获取信息,而不是从连接表中获取信息。

    我们有这样的模式:

    - users
      - id
      - name
    
    - groups
      - id
      - name
    
    - user_has_groups
      - user_id
      - group_id
    

    $user->UserHasGroups ;// returns a collection of user_has_groups
    $user->Groups; // returns Doctrine_Record_UnknownPropertyException 
    

    有没有直接的方法?

    1 回复  |  直到 14 年前
        1
  •  2
  •   richsage    14 年前

    schema.yml 看起来像这样。如果您的安装使用不同的方法来定义架构,则可能需要对其进行更改:

    Users:
      columns:
        name:
          type: string
      relations:
        Groups:
          refClass: UserHasGroups
          local: user_id
          foreign: group_id
    
    Groups:
      columns:
        name:
          type: string
      relations:
        Users:
          refClass: UserHasGroups
          local: group_id
          foreign: id
    
    UserHasGroups
      columns:
        user_id:
          type: integer
          primary: true
        group_id:
          type: integer
          primary: true
    

    条令将使用 UserHasGroups 类作为多对多联接表。然后,打电话来 $user->Groups 会把你们都联系起来的 Groups 物体。

    作为旁注,我将把你们的型号名称改为单数形式,例如 User Group . $user = new Users() 乍一看就意味着您要一次性创建多个用户,我猜您不是:-)

    看到了吗 Doctrine join table docs 更多细节。