php - MySQL JSON 设置

标签 php mysql json

如果已经有好的答案,我深表歉意,我还没有找到...

我已经创建了一个端点 URL,它正在获取 JSON 作为从 MySQL Select 查询返回的 $result。我想让 JSON 从这个查询中获得子层,并且想知道是否有人有建议。让我用简短的例子更好地解释。

我有一个练习表:

id  |  name
1   |  squats
2   |  bench press
3   |  deadlift

我还有一个 exercises_tags 表:

id  |  exercise_id  |  tag
1   |  1            |  legs
2   |  1            |  glute
3   |  1            |  quadriceps
4   |  2            |  upper body
5   |  2            |  chest
6   |  3            |  legs

好的...所以我使用的查询是:

"SELECT * FROM exercises"

这提供了一个 JSON:

[{
  "id": 1,
  "exercisename": "Squats"
},
{
  "id": 2,
  "exercisename": "Bench Press (DB)"
},
{
  "id": 3,
  "exercisename": "Deadlift"
}]

我想要的是:

[{
  "id": 1,
  "exercisename": "Squats",
  "tags": [{
      "tag": "Legs",
      "tag": "Glute",
      "tag": "Quadriceps"
  }]
},
{
  "id": 2,
  "exercisename": "Bench Press (DB)",
  "tags": [{
      "tag": "Upper Body",
      "tag": "Chest"
  }]
},
{
  "id": 3,
  "exercisename": "Deadlift",
  "tags": [{
      "tag": "Legs"
  }]
}]

我知道这格式不太正确,但就是这个想法。我试图将“exercises_tags”表加入“exercises”表以实现我正在寻找的东西......但是当我这样做时,它为每个标签提供了一个新的 JSON {},所以我会列出“squats”例如三遍。或者如果我说“GROUP BY exercises_id”,那么我只会得到一个标签。

有什么想法吗?

编辑:不确定它是否有所作为......但我正在通过在 Laravel 中创建的路由创建这些端点。然后我在 Ionic 中使用 $http,我在其中使用 GET 请求此 JSON,然后在我的应用程序中使用它。

最佳答案

简而言之,在你之后

"SELECT * FROM exercises"

并有一个数组...在输出 json 之前,遍历数组并

"SELECT * FROM exercises_tags where exercise_id = ".$exercise['id'];

当你这样做时,将返回的“标签”添加到练习行。

有关此技术或替代技术的更多信息,have a look at the best way to create nested array from mulitiple queries and loops

关于php - MySQL JSON 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40836588/

相关文章:

php - mysql无法创建外键错误121但不存在

php - Htaccess 不错的网址

mysql - 使用 CONCAT 时 phpMyAdmin 出现错误结果

PHP ip2long 函数没有给出当前结果

c# - 如何使用 JsonProperty 获取嵌套属性

php - .htaccess 404 真实路径错误

php - 如何使用 PHP 在 facebook 应用程序 Canvas 中实现 paypal?

mysql - Rails + MySQL 中的发票编号

json - 在编译时不知道 key 的 circe 中解码 JSON 值

javascript - 将 json 与 jquery Ajax 一起使用不会返回任何内容