【问题标题】:Symfony 1.4 Propel: I defined, but foreign keys isn't defined in tablesSymfony 1.4 Propel:我定义了,但表中没有定义外键
【发布时间】:2012-01-15 15:52:00
【问题描述】:

让我们看看这个架构:

  orders:
    _attributes:    { phpName: Orders, default_table_charset: utf8, default_table_collate: utf8_general_ci }
    id:             ~
    category_id:    { type: integer, size: '10', required: true, defaultvalue: '0', foreigntable: categories, foreignreference: id }
    whatisthis:     { type: longvarchar, required: false }

  categories:
    _attributes: { phpName: Categories }
    id:          ~
    name:        { type: varchar, size: '255', required: true, defaultvalue: '' }
    _uniques:    { index_name: [name] }

我发现我的表中没有定义外键。我正在使用innoDB,所以 PK 是可能的。还是Propel不应该设置外键?

【问题讨论】:

    标签: php symfony1 propel


    【解决方案1】:

    foreingtable”和“foreignreference”应该是驼峰式的。并且 category_id' 的大小应该与类别的 id 的大小相等。

      orders:
        _attributes:    { phpName: Orders, default_table_charset: utf8, default_table_collate: utf8_general_ci }
        id:             ~
        category_id:    { type: integer, size: '10', required: true, defaultvalue: '0', foreignTable: categories, foreignreRerence: id }
        whatisthis:     { type: longvarchar, required: false }
    
      categories:
        _attributes: { phpName: Categories }
        id:          ~
        name:        { type: varchar, size: '255', required: true, defaultvalue: '' }
        _uniques:    { index_name: [name] }
    

    【讨论】:

      【解决方案2】:

      您使用的是哪个 symfony 和 propel 版本?

      假设正在使用 Propel 1.x,这里是一个一对多关系示例:

      
        musician:
          _attributes: { phpName: Musician }
          id: { phpName: Id, type: INTEGER, size: '9', primaryKey: true, autoIncrement: true, required: true }
          #other fields
        musician_album:
          _attributes: { phpName: MusicianAlbum }
          id: { phpName: Id, type: INTEGER, size: '9', primaryKey: true, autoIncrement: true, required: true }
          musician_id: { phpName: MusicianId, type: INTEGER, size: '9', required: true, foreignTable: musician, foreignReference: id, onDelete: CASCADE, onUpdate: CASCADE }
          #other fields
          _indexes: { musician_id: [musician_id] }
      

      说实话,我更喜欢手动创建数据库表(设置、索引、外键等),然后我使用 symfony(假设您使用的是 Symfony 1.x)任务来创建架构:

      symfony propel:build-schema
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-11
        • 1970-01-01
        • 2012-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多