php - 将多个 JSON 对象合并为一个对象并将不相等的数据作为数组添加到该对象中

标签 php mysql json laravel

我有一个 Laravel 连接数据库查询,它返回给我:

[
  {
    "post_id": 28,
    "site_id": 16,
    "url": "http://something.com",
    "title": "Website title",
    "post_created_at": "2015-07-06 02:40:01",
    "post_updated_at": "2015-09-08 22:33:20",
    "tag_map_id": 11,
    "tag_id": 9,
    "tag_name": "dog"
  },
  {
    "post_id": 28,
    "site_id": 16,
    "url": "http://something.com",
    "title": "Website title",
    "post_created_at": "2015-07-06 02:40:01",
    "post_updated_at": "2015-09-08 22:33:20",
    "tag_map_id": 12,
    "tag_id": 10,
    "tag_name": "cat"
  }
]

因此,相同的 post_id 可以有多个结果,但一篇文章也可以有多个标签。

我想要的是将这些多个结果合并到一个 JSON 对象中,该对象包含数组中所有与标签相关的内容。因此,每个 post_id 应该只有一个 JSON 对象。就像下面的例子:

[
  {
    "post_id": 28,
    "site_id": 16,
    "url": "http://something.com",
    "title": "Website title",
    "post_created_at": "2015-07-06 02:40:01",
    "post_updated_at": "2015-09-08 22:33:20",
    "tag_map_id": [11, 12],
    "tag_id": [9, 10],
    "tag_name": ["dog", "cat"]
  }
]

如何在 PHP 中实现这种合并?

最佳答案

我根本不会使用join。我会使用 Eloquent,

Post::with('tags')

然后对生成的 Collection 使用 json_encode()

关于php - 将多个 JSON 对象合并为一个对象并将不相等的数据作为数组添加到该对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32531550/

相关文章:

php - 获取数组中每个唯一值的总数?

mysql - 获取 SQL 查询中创建的别名的总和

javascript - 无法解决Ajax、PHP、Json、Laravel(PHP框架)中的代码

php - 从 PHP 错误执行 MySQL 查询

php - 我的 css 在 php 代码后不起作用

php - 合并具有唯一属性的两行

php - 注册表未将数据发送到数据库

PHP 在 require 时避免 sleep

javascript - 如何在javascript中创建一个包含一组数组并动态为其赋值的数组?

mysql - 当服务器返回对象的属性顺序很重要时,我应该使用 JSON 还是 XML?