我正在创建一个存储用户旅程的Web应用程序,我在CakePHP 2.2.5中构建了这个应用程序。
我有一个旅程模型,旅程模型有许多坐标对象,用于存储lat长坐标。
我想发送一个API调用到包含json的旅程的add方法来创建一个新对象。
我试图找出如何格式化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}
答案 0 :(得分:1)
最好将json转换为数组(使用json_decode
函数)然后操作数组,如果你想最后将它转换为json(json_encode
函数)。
cakePHP通过以下方式处理此任务:JsHelper::object
编辑1:但我认为当php为你做这件事时,最好使用php纯函数而不是cakePHP函数。
编辑2:我认为cakePHP没有处理它,你应该自己处理它,将你的json转换为数组,在foreach
中根据需要更改你的数组然后将它传递给saveAll函数来插入或更新在数据库中。
答案 1 :(得分: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}
]
}
坐标属于Journey。