У меня есть таблица, которая использует первичный ключ с автоматическим добавлением и имеет несколько полей.
<column name="id" type="INTEGER" primaryKey="true" required="true" autoIncrement="true" /> <column name="field1" type="INTEGER" required="true" /> <column name="field2" type="INTEGER" required="true" /> <column name="field3" type="INTEGER" /> <column name="field4" type="INTEGER" /> <column name="field5" type="INTEGER" />
Я хочу убедиться, что field1
+ field2
не используется более одного раза, поэтому я добавил их в качестве первичных ключей в дополнение к id, но это создает проблемы, когда я пытаюсь использовать findPK()
. Я бы предпочел, чтобы в качестве первичного ключа был добавлен auto-incremented id, но я также хочу убедиться, что поле field1
+ field2
не вводится более одного раза.
<column name="id" type="INTEGER" primaryKey="true" required="true" autoIncrement="true" /> <column name="field1" type="INTEGER" required="true" primaryKey="true" /> <column name="field2" type="INTEGER" required="true" primaryKey="true" />
Попробуйте установить уникальный индекс в этих полях, например:
<unique> <unique-column name="/field1/" /> <unique-column name="/field2/" /> </unique>
в соответствии с документом propel doc
И вот ответ на доктрину с ямлом
Pet: columns: pet_name: {type: string(32)} owner_id: {type: integer} indexes: owner_name: fields: [pet_name, owner_id] type: unique
ДомашниеPet: columns: pet_name: {type: string(32)} owner_id: {type: integer} indexes: owner_name: fields: [pet_name, owner_id] type: unique