php - LARAVEL:在单个数组中添加键和值
问题描述
我有一个数据数组,我想添加一个键,它的值在同一个数组中。在这里addedPost
我想添加键favouritePost
,它的值$favouritePost
在product
键之后。我怎样才能做到这一点 ?
这是我的查询:
$addedPost = Post::with(['product','postattribute.attribute.category','user.userDetails'])
->whereId($postData['post_id'])
->first();
$favouritePost = PostFavourite::isAlreadyAdded($postData['post_id'], Auth::id());
return [
'status_code' => $status_code,
'message' => $message,
'PostDetails' => $addedPost
];
我得到的回应是:
{
"PostDetails": {
"id": 289,
"user_id": 12,
"product_id": 2,
"demand_or_supply": "Demand",
"description": "edited1",
"status": "Expired",
"created_at": "2018-06-22 07:35:27",
"updated_at": "2018-07-05 06:42:56",
"product": {
"id": 2,
"title": "Diamond",
"icon": null,
"status": "Active"
}
}
}
预期结果:
{
"PostDetails": {
"id": 289,
"user_id": 12,
"product_id": 2,
"demand_or_supply": "Demand",
"description": "edited1",
"status": "Expired",
"created_at": "2018-06-22 07:35:27",
"updated_at": "2018-07-05 06:42:56",
"product": {
"id": 2,
"title": "Diamond",
"icon": null,
"status": "Active"
},
"favouritepost": {
"id": 8,
"post_id": 289,
"user_id": 12
}
}
}
解决方案
第一:你$addedPost
不是一个数组,而是一个 Eloquent 集合。有多种可能性可以做到这一点。最简单的方法是将数组与集合合并。
$union = $addedPost->union($favouritePost->toArray());
对于其他所有解决方案,请查看 Laravel 文档。这很容易理解。
https://laravel.com/docs/5.6/collections
编辑:虽然我错过了->first()
问题的内部,但只需使用已经提到的解决方案。->first()
返回一个StdClass
对象,因此您可以像这样处理它:
$addedPost->favouritepost = $favouritePost;
在这种情况下,该属性 favouritePost 将添加到 $ addedPost 对象。无需再次调用任何方法。
推荐阅读
- python - 如何在微分方程(SciPy)中使用 if 语句?
- php - 在 PHP foreach 循环中使用变量
- checkbox - 是否可以将复选框和文本(值)插入到同一个 wxGrid 单元格中?或者我可以将多个复选框插入到单个 wxGrid 单元格中吗?
- java - 将所有字段名称从firestore文档获取到arraylist
- data-structures - 实现索引队列或链表字典的数据结构的名称?
- redirect - 访问没有指向它的域的虚拟主机
- c# - 用于 URL 授权的 Mvc 区域-控制器-操作列表
- angularjs - $http请求中使用路由的目的是什么
- android - 语音通话录音 其他人语音未录音
- regex - 将网站文件夹重定向到子域