0

我正在尝试使用多个标签来“标记”多个“点”。我成功地标记了我的单点。不幸的是,当我尝试在另一个点上使用标签(例如“test2”作为标签)时,如果我将“唯一”设置为 false 或“唯一”设置为 true,则会出现重复输入错误,它将删除“test2”的所有其他点的我的标签并创建一个新的。

这是我的帖子数据:

Array
(
    [Tag] => Array
        (
            [id] => 4b7af6d7-787c-4f10-aa49-2502c0a80001
            [name] => Test2
        )

    [Point] => Array
        (
            [id] => 4b47c66f-a130-4d12-8ccd-60824051e4b0
        )

)

在我的标签模型中,我有这个:

public $hasAndBelongsToMany = array(

'Point' => array(
        'className' => 'Point',
        'joinTable' => 'points_tags',
        'foreignKey' => 'tag_id',
        'associationForeignKey' => 'point_id',
        'unique' => false)
);

我也尝试过将 'unique' 设置为 true。不幸的是,这将删除连接表 ('points_tags') 中的任何其他“Test2”实例。

我已经尝试过使用 save() 和 saveAll()。两者都给我这个错误:

警告 (512): SQL 错误: 1062: 重复条目 '4b7af6d7-787c-4f10-aa49-2502c0a80001-4b47c66f-a130-4d12-8ccd-608' 键 'MAN_ADD' [CORE/cake/libs/model/datasources/dbo_source .php,第 527 行] 查询:INSERT INTO points_tags( tag_id, point_id, id) VALUES ('4b7af6d7-787c-4f10-aa49-2502c0a80001','4b47c66f-a130-4d12-8ccd-60824051e4b0','4b7b39f3-43973-4744-0c ')

想法???

建议???

4

2 回答 2

0

当您使用 save 方法时,您是在循环中执行此操作吗?请记住,最佳做法是在循环保存时调用 model::create() 。

我经常发现,当我遇到 HABTM 保存行为问题时,是因为我没有调用 model::create。

于 2010-02-17T17:55:51.493 回答
0

从哪里来id?我猜它是表的主键,从我从你的帖子中了解到的(请写得更清楚,帮助我们帮助你)问题不在于点或标签,而在于 points_tags 表中的 id。

于 2010-02-17T08:55:05.350 回答