![](/img/trans.png)
[英]Laravel 5.4- How to receive JSON data from server and save in Database
[英]Laravel 5.4 save json to database
帮我将 json 保存到 db。 表字段类型 - 文本。 我有带转换数组的模型
class Salesteam extends Model
{
protected $casts = [
'team_members' => 'array'
];
}
我想得到这样的 json {"index":"userId"} 并将其存储到 db。 示例:
{"1":"7","2":"14","3":"25","4":"11"}
我在数据库中有 Salesteam 模型和“team_members”列来保存属于这个团队的所有用户 ID。 我的代码通过 id 查找团队,获取所有“team_members”属性并将新用户添加到该团队。 我想在添加新用户 ID 时以 json 格式存储所有用户并增加索引。
销售团队属性:
"id" => 20
"salesteam" => "Admin"
"team_leader" => 0
"invoice_target" => 884.0
"invoice_forecast" => 235.0
"team_members" => "[1,66,71]"
"leads" => 0
"quotations" => 0
"opportunities" => 0
"notes" => ""
"user_id" => 1
"created_at" => "2017-09-22 09:13:33"
"updated_at" => "2017-09-22 13:10:25"
"deleted_at" => null
将新用户添加到团队的代码:
$salesTeam = $this->model->find($salesTeamId);
$teamMembers = $salesTeam->team_members;
$teamMembers[] = $userId;
$salesTeam->team_members = $teamMembers;
$salesTeam->save();
但它存储到 db 数组并且没有索引
"team_members" => "[1,34,56]"
来自 Laravel 文档 - Array & JSON Casting “数组将自动序列化回 JSON 进行存储”
我错在哪里?
像这样制作一个json字符串
{"1":"7","2":"14","3":"25","4":"11"}
在php
,当您将元素推送到数组时,您必须传递一个键。 例如
$teamMembers = [];
$teamMembers['1'] = 7;
$teamMembers['2'] = 14;
...
如果你不让它成为一个associative array
, php
在转换为 json 字符串时会认为它是 json 数组。
提示:您可以只传递一个键,它也会起作用。 例如
$test = [1, 2, 3, 4, 5, 6];
$test['10'] = 56;
echo json_encode($test);
输出:
"{"0":1,"1":2,"2":3,"3":4,"4":5,"5":6,"10":56}"
只需使用
$teamMembers = json_encode($salesTeam->team_members);
这应该是全部。
如果你得到这个"[1,34,56]"
就做json_decode($team_members)
你会得到这个:
array:3 [▼
0 => 1
1 => 34
2 => 56
]
简单的解决方案
$books = App\Book::all();
$user->books = $books->toJson();
$user->save(); //example: userid -> 2
$user = App\User::find(2);
$userBooks = json_decode($user->books, true); // to generate object again
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.