Web サイトにタグ システムを追加しようとしています。
ユーザーはチケットを作成し、タグを追加できます。
これを行うために、モデル チケットとタグの間に HABTM 関係があります。
私の問題は今です:
新しいリレーションを保存すると、tags_tickets テーブルで同じチケット ID を複数回持つことができますが、tag_id を複数回使用しようとするとすぐに、この ID の古いエントリが削除されます。
class Tag extends AppModel {
public $name = 'Tag';
public $actsAs = array('Containable');
public $hasAndBelongsToMany = array(
'Ticket' => array(
'className' => 'Ticket',
'joinTable' => 'tags_tickets',
'foreignKey' => 'tag_id',
'associationForeignKey' => 'ticket_id',
'unique' => 'keepExisting',
)
);
}
class Ticket extends AppModel {
public $name = 'Ticket';
public $actsAs = array('Containable');
public $hasAndBelongsToMany = array(
'Tag' => array(
'className' => 'Tag',
'joinTable' => 'tags_tickets',
'foreignKey' => 'ticket_id',
'associationForeignKey' => 'tag_id',
'unique' => 'keepExisting',
)
);
}
コントローラーの関数で、saveAll を実行します。
私が意味することのほんの一例:
ticket.id = 1 と tag_id = 1 は問題なく動作します。
たとえば、ticket.id = 1 と tag_id = 2 を追加できるようになりました。
しかし、ticket.id = 2 および tag_id = 1 を追加すると、ticket.id = 1 および tag_id = 1 のエントリが削除されます。
私はそれを正しく動作させることができません。データベースに同じ関係を複数回持たせたくないので、unique を false に変更したくありません。これを解決する方法はありますか?