CakePHP - HABTM - 将多个标签添加到多个点

时间:2010-02-17 00:45:27

标签: cakephp tags save has-and-belongs-to-many

我正试图用多个标签'标记'多个'点'。我正在成功标记我的单点。不幸的是,当我尝试使用标记,例如'test2'在另一个点作为标记时,如果我将'unique'设置为false或者'unique'设置为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'也是如此。不幸的是,这将删除连接表中的“Test2”的任何其他实例('points_tags')。

我使用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_tagstag_idpoint_idid)VALUES('4b7af6d7-787c-4f10-aa49-2502c0a80001','4b47c66f-a130-4d12-8ccd -60824051e4b0','4b7b39f3-46f8-4744-ac53-3973c0a80001')

思考????

建议????

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

当你使用save方法时,你是在循环中做的吗?请记住,最佳做法是在保存循环时调用model :: create()。

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