CakePHP在多对多表中存储id的数组

时间:2012-06-13 17:48:16

标签: arrays cakephp many-to-many relationship

我遇到了CakePHP的问题。我尝试使用saveAll()函数设置一些数据。我json_decode以下JSON字符串并将结果传递给saveAll()方法。

{
    "SurveyAnswer":{
        "data":25,
        "data":45,
        "data":100
    },
    "GpsObservation":[
    {
        "latitude":1,
        "longitude":1
    },
    {
        "latitude":1,
        "longitude":1
    }
    ],
    "PeopleOption":[
    {
        "id":1
    },
    {
        "id":2
    }
    ]
}

'PeopleOption'表是'SurveyAnswer'和'PeopleOptions'之间的多对多关系表。正如您所看到的,我将一些数据存储在SurveyAnswer中,这非常有效。但是,用户可以选择多个人,因此'PeopleOption'Fulti-to-Many表和CakePHP不会将这些存储在数据库中。

奇怪的是:当我将PeopleOption数组更改为JSON对象时,如下所示:

"PeopleOption": {
    "id":1
}

效果非常好,但显然只有一个记录。

如何传递必须存储在多对多关系表'PeopleOption'中的id数组?

1 个答案:

答案 0 :(得分:0)

虽然我还没有得到答案,但我自己找到了解决方案。使用saveAll()函数在多对多表中插入id的数组时,您应该在JSON对象中使用嵌套数组,如下所示:

"PeopleOption": {
   "PeopleOption":[
       3,
       14,
       7,
       etc,
   ]
}

希望这有助于任何遇到我遇到的问题的人!