0

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 に変更したくありません。これを解決する方法はありますか?

4

2 に答える 2