Symfony 1.4 Propel: я определил, но внешние таблицы не определены в таблицах - PullRequest
0 голосов
/ 15 января 2012

Давайте посмотрим на эту схему:

  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, поэтому возможны ПК.Или Propel не должен устанавливать внешние ключи?

Ответы [ 2 ]

3 голосов
/ 15 января 2012

" foreingtable " и " Foreignreference " должны быть в верблюжьем корпусе.И размер category_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] }
1 голос
/ 15 января 2012

Какую версию 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
...