Symfony的1.4行走:我确定,但外键没有在表中定义
问题描述:
让我们来看看这个模式:Symfony的1.4行走:我确定,但外键没有在表中定义
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不应该设置外键?
答
的 “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] }
答
您正在使用哪个symfony和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