LARAVEL:在单个数组中添加键和值

时间:2018-07-05 07:33:28

标签: php laravel laravel-5.5

我只有一个数据数组,我想在同一个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
    }  
}
}

4 个答案:

答案 0 :(得分:6)

首先:您的$addedPost不是数组而是Eloquent集合。有多种可能性可以做到这一点。最简单的方法是将一个数组与集合进行联合。

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

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

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

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

$addedPost->favouritepost = $favouritePost;

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

答案 1 :(得分:0)

首先将要返回的所有值存储在一个关联数组中,然后使用array_push()在该数组中添加新的键/值。毕竟,您只需返回该数组即可。

答案 2 :(得分:0)

假设$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
];

答案 3 :(得分:0)

用于在对象中添加键值

$object->new_key="value";