私はPropelをORMとして使用してSymfony 1.2(更新できません。私は多対多の関係に奇妙な問題を抱えています。symfonyで外国のエンティティを更新するとき多対多の関係がなくなります
2つのテーブルA
とB
と多対多の関係A_has_B
があるとします。私は、のa
エンティティ、B
のb
エンティティ、A_has_B
の関係がPKが(a_id, b_id)
であるとします。 symfonyのadmin生成モジュールを使用してb
エンティティ(そのIDではなく、そのPKでない別のフィールド)を更新すると、(a_id, b_id)
がデータベースから削除されます。
これは、Symfonyバックエンドを使用してのみ発生します。 phpmyadminでは(a_id, b_id)
の関係を失うことなくa
とb
を更新できます。
すべてのテーブルはMySQL/InnoDBです。 A_id
とB_id
の中のA_has_B
は、A
とB
のIDを指す外部キーです。両方の列にON DELETE CASCADE
とON UPDATE CASCADE
があります。
ありがとうございました。
UPDATE:3つのテーブルTeam
とParticipants
とその関係
propel:
_attributes:
package: lib.model
defaultIdMethod: native
team:
_attributes: { phpName: Team }
id: { type: INTEGER, size: '11', primaryKey: true, autoIncrement: true, required: true }
name: { type: VARCHAR, size: '255', required: true }
description: { type: LONGVARCHAR, required: false }
participant:
_attributes: { phpName: Participant }
id: { type: INTEGER, size: '11', primaryKey: true, autoIncrement: true, required: true }
name: { type: VARCHAR, size: '255', required: true }
team_has_participant:
_attributes: { phpName: TeamHasParticipant }
team_id: { type: INTEGER, size: '11', primaryKey: true, required: true, foreignTable: team, foreignReference: id, onDelete: CASCADE, onUpdate: CASCADE }
participant_id: { type: INTEGER, size: '11', primaryKey: true, required: true, foreignTable: participant, foreignReference: id, onDelete: CASCADE, onUpdate: CASCADE }
_indexes: { participant_id: [participant_id] }
が、私はそのすべてteam_has_participant
関係を失うよ、私はteam
エンティティでdescription
フィールドを更新言うためにここは、YMLスキーマですその外国team
エンティティを持っていた。
ymlまたはxmlスキーマを投稿できますか? –
@Vlad Nedelcu、スキームを –
という質問に更新しました。問題は表示されません。 'b'エンティティのIDを更新すると、リンクテーブルエントリはもはや有効ではなくなります。それがどのように働くことになったのか。 –