-1

ユーザーの旅を保存する Web アプリケーションを作成しており、このアプリケーションを CakePHP 2.2.5 で構築しています。

私はジャーニーモデルを持っており、そのジャーニーモデルには緯度経度座標を格納する多くの座標オブジェクトがあります。

ボディに json を含むジャーニーの add メソッドに API 呼び出しを送信して、新しいオブジェクトを作成したいと考えています。

コントローラーが JSON を使用できるように JSON をフォーマットする方法を見つけようとしましたが、見つけられないようです。子オブジェクトを JSON に追加する方法も知りたいです。

このcURLコマンドを使用してメソッドをテストしています

curl -i -H "ACCEPT: application/json" -X POST --data @/home/sam/data.json http://localhost/journeys/add.json

この CURL コマンドを実行すると、データベースに空のエントリが作成されます。

CURL に含まれる JSON ファイルには、

{"description" : "Hello World", "user_id":3}
4

2 に答える 2

1

jsonをarray(with json_decodefunction)に変換してから配列を操作することをお勧めします。最後に、json(json_encodefunction)に変換する必要があります。

cakePHPはこのタスクを次のように処理します:JsHelper :: object

編集1:しかし、phpがあなたのためにそれを行うときは、cakePHP関数の代わりにphp純粋関数を使用する方が良いと思います。

編集2:cakePHPはそれを処理しないと思います。自分で処理し、jsonを配列に変換し、必要に応じて配列を変更しforeachてから、saveAll関数に渡してデータベースに挿入または更新する必要があります。

于 2013-01-11T18:15:09.180 に答える
0

さらに調査を行ったところ、問題の解決策が見つかりました。

CakePHP は JSON データを保存し、ネストされたモデル情報も保存します。

$data = $this->request->input('json_decode');

これは@Arashが言ったことに似ていますが、呼び出すことでネストされたモデル情報も保存します

$this->Journey->saveAssociated($data)

コントローラーに提供する JSON は次のようになります。

{"Journey":
{"description":"Not even an article from the map", "user_id":3}, 
"Coordinate":[
    {"lat":54.229149, "lng":-5.114115},
    {"lat":54.39153, "lng":-5.114113}
 ]
}

座標がジャーニーに属する場所。

于 2013-01-23T16:14:16.993 に答える