У меня две модели, называемые Book и Tag, которые находятся в отношениях HABTM. Я хочу, чтобы пара (книга, тег) была сохранена только один раз. В моих моделях у меня есть
var $hasAndBelongsToMany = array( 'Tag' => array( 'className' => 'Tag', 'joinTable' => 'books_tags', 'foreignKey' => 'book_id', 'associationForeignKey' => 'tag_id', 'unique' => true ) );
и наоборот, но флажок Unique не помогает мне; Я все еще могу сэкономить вдвое больше одной пары.
Как это сделать в CakePHP? Должен ли я объявлять пару (книгу, тег) уникальной в базе данных напрямую, или это заставит CakePHP сходить с ума? Есть ли способ Cakey справиться с этой ситуацией?
EDIT: Я попытался сделать пару уникальной с запросом (я использую MySQL)
ALTER TABLE books_tags ADD UNIQUE (book_id,tag_id);
но это не работает. Когда я сохраняю несколько тегов за раз, все идет хорошо, если все пары новы. Если хотя бы одна из пар повторяется, CakePHP не выполняет всю операцию, поэтому не сохраняет ни одну новую пару (даже не хорошие).