LARAVEL : 在单个数组中添加键和值
LARAVEL : Add key and value in single array
我有一个数据数组,我想在同一个数组中添加一个键和它的值。在 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
}
}
}
首先,您将 returning 中的所有值存储在一个关联数组中,然后使用 array_push() 在那个 array.After 中添加新的 key/value只是 return 那个数组。
首先:您的 $addedPost
不是一个数组,而是一个 Eloquent 集合。有多种可能性可以做到这一点。最简单的方法是将 Array 与 Collection 合并。
$union = $addedPost->union($favouritePost->toArray());
对于所有其他解决方案,请查看 Laravel 文档。这很容易理解。
https://laravel.com/docs/5.6/collections
编辑:虽然我错过了问题中的 ->first()
,但请使用已经提到的解决方案。 ->first()
returns 一个 StdClass
对象,所以你可以这样处理:
$addedPost->favouritepost = $favouritePost;
在这种情况下,属性 favouritePost 被添加到 $addedPost 对象中。无需再次调用任何方法。
假设 $addedPost
是一个 laravel 集合,您可以简单地执行以下操作:
$addedPost = Post::with(['product','postattribute.attribute.category','user.userDetails'])
->whereId($postData['post_id'])
->first();
$favouritePost = PostFavourite::isAlreadyAdded($postData['post_id'], Auth::id());
$addedPost->put('favouritepost', $favouritePost);
return [
'status_code' => $status_code,
'message' => $message,
'PostDetails' => $addedPost
];
用于在对象中添加键值
$object->new_key="value";
我有一个数据数组,我想在同一个数组中添加一个键和它的值。在 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
}
}
}
首先,您将 returning 中的所有值存储在一个关联数组中,然后使用 array_push() 在那个 array.After 中添加新的 key/value只是 return 那个数组。
首先:您的 $addedPost
不是一个数组,而是一个 Eloquent 集合。有多种可能性可以做到这一点。最简单的方法是将 Array 与 Collection 合并。
$union = $addedPost->union($favouritePost->toArray());
对于所有其他解决方案,请查看 Laravel 文档。这很容易理解。
https://laravel.com/docs/5.6/collections
编辑:虽然我错过了问题中的 ->first()
,但请使用已经提到的解决方案。 ->first()
returns 一个 StdClass
对象,所以你可以这样处理:
$addedPost->favouritepost = $favouritePost;
在这种情况下,属性 favouritePost 被添加到 $addedPost 对象中。无需再次调用任何方法。
假设 $addedPost
是一个 laravel 集合,您可以简单地执行以下操作:
$addedPost = Post::with(['product','postattribute.attribute.category','user.userDetails'])
->whereId($postData['post_id'])
->first();
$favouritePost = PostFavourite::isAlreadyAdded($postData['post_id'], Auth::id());
$addedPost->put('favouritepost', $favouritePost);
return [
'status_code' => $status_code,
'message' => $message,
'PostDetails' => $addedPost
];
用于在对象中添加键值
$object->new_key="value";