上面显示的是我的firebase实时数据库数据结构。目前
msgs
数组下只有一组数据,名称为119
。我的要求是添加更多组数据(可能带有索引120,121等),如数组119
。如下laravel 代码替换整个 msgs
数组,同时添加新的数据集。我想将 msgs
数组中的所有项目保留为所有其他数组,并将新的数据集添加为 firebase 中 msgs
数组的下一个项目。如何实现这一目标?感谢任何帮助。
$url = env('FIREBASE_DATABASE_URL') . 'messages.json';
// $postdat = array();
$postdat[$request->chat_id]["user_id_" . $user_id]['chats']['chat_id_' . $request->chat_id]['msgs'][$message['id']]['msg_id'] = $message['id'];
$postdat[$request->chat_id]["user_id_" . $user_id]['chats']['chat_id_' . $request->chat_id]['msgs'][$message['id']]['sender_id'] = $message['sender_id'];
$postdat[$request->chat_id]["user_id_" . $user_id]['chats']['chat_id_' . $request->chat_id]['msgs'][$message['id']]['msg_body'] = $message['message'];
$postdat[$request->chat_id]["user_id_" . $user_id]['chats']['chat_id_' . $request->chat_id]['msgs'][$message['id']]['sender_name'] = $message['sender_name'];
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postdat));
意味着,我只是想向
120
数组添加一个新项目 msgs
。
预期输出的示例数据结构
我的要求是添加更多组数据(可能带有索引120,121等),例如数组119。
我认为你需要在这里推送数据,而不是替换数据。
修改以下代码;
$url = env('FIREBASE_DATABASE_URL') . 'messages.json';
$postdat = array();
$postdat['msg_id'] = $message['id'];
$postdat['sender_id'] = $message['sender_id'];
$postdat['msg_body'] = $message['message'];
$postdat['sender_name'] = $message['sender_name'];
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postdat));
我还看到您使用
cURL
与 Firebase 交互,因此您需要使用 POST
而不是 PATCH
将新数据附加到指定路径。