我尝试在我的网站上添加标签系统。
用户可以创建故障单并为其添加标记。
为此,我在模型故障单和标签之间建立了HABTM关系。
我现在的问题是:
当我保存一个新关系时,我可以在tags_tickets表中多次使用相同的Ticket 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,因为我不想在数据库中多次使用相同的关系。有办法解决这个问题吗?
答案 0 :(得分:0)
你应该花一点时间阅读docs
具体查看可用的配置选项,例如unique
答案 1 :(得分:0)
我通过解决方法解决了这个问题:
我为tags_tickets表(TagTicket)创建了一个单独的模型,并删除了故障单和标记模型中的HABTM关联。
为此,我为Ticket和Tag Model添加了与TagTicket Model的hasMany关系,并且该Model获得了与Ticket和Tag的belongsTo关系。
现在我可以按照自己的意愿保存和删除,并可以在保存之前检查重复项。