0

CakePHPに問題があります。saveAll()関数を使用してデータを設定しようとしています。次のJSON文字列をjson_decodeし、結果を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」の多対多テーブルとCakePHPはそれらをデータベースに保存しません。

奇妙なことに、PeopleOption配列を次のようにJSONオブジェクトに変更すると次のようになります。

"PeopleOption": {
    "id":1
}

それは完全にうまく機能しますが、明らかに1つのレコードに対してのみです。

多対多の関係テーブル「PeopleOption」に格納する必要のあるIDの配列を渡すにはどうすればよいですか?

4

1 に答える 1

0

まだ答えは出ていませんが、自分で解決策を見つけました。saveAll() 関数を使用して多対多テーブルに ID の配列を挿入する場合、次のように JSON オブジェクト内でネストされた配列を使用する必要があります。

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

これが、私が抱えていた問題に遭遇した人に役立つことを願っています!

于 2012-06-18T18:54:17.187 に答える