首页 > 解决方案 > LARAVEL:在单个数组中添加键和值

问题描述

我有一个数据数组,我想添加一个键,它的值在同一个数组中。在这里addedPost我想添加键favouritePost,它的值$favouritePostproduct键之后。我怎样才能做到这一点 ?

这是我的查询:

$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
    }  
}
}

标签: phplaravellaravel-5.5

解决方案


第一:你$addedPost不是一个数组,而是一个 Eloquent 集合。有多种可能性可以做到这一点。最简单的方法是将数组与集合合并。

$union = $addedPost->union($favouritePost->toArray());

对于其他所有解决方案,请查看 Laravel 文档。这很容易理解。

https://laravel.com/docs/5.6/collections

编辑:虽然我错过了->first()问题的内部,但只需使用已经提到的解决方案。->first()返回一个StdClass对象,因此您可以像这样处理它:

$addedPost->favouritepost = $favouritePost;

在这种情况下,该属性 favouritePost 将添加到 $ addedPost 对象。无需再次调用任何方法。


推荐阅读