我有两个模型,称为 Book 和 Tag,它们处于 HABTM 关系中。我希望一对(书,标签)只保存一次。在我的模型中,我有
var $hasAndBelongsToMany = array(
'Tag' => array(
'className' => 'Tag',
'joinTable' => 'books_tags',
'foreignKey' => 'book_id',
'associationForeignKey' => 'tag_id',
'unique' => true
)
);
反之亦然,但唯一标志对我没有帮助;我仍然可以为同一对夫妇节省两次。
我如何在 CakePHP 中做到这一点?我应该直接在数据库中声明这对夫妇(书,标签)是唯一的,还是这会让 CakePHP 发疯?有没有一种 Cakey 方法来处理这种情况?
编辑:我尝试通过查询使这对夫妇独一无二(我正在使用 MySQL)
ALTER TABLE books_tags ADD UNIQUE (book_id,tag_id);
但这并不好。当我一次保存多个标签时,如果所有情侣都是新的,一切都会顺利进行。如果至少有一对重复,CakePHP 将无法完成整个操作,因此它不会保存任何新的一对(即使是好的一对)。