php - Laravel Eloquent 在单个键值对中获取所有内容

标签 php laravel eloquent

我有两张 table postspost_metas架构如下:

POSTS
+------------+------------------+
| Field      | Type             |
+------------+------------------+
| id         | int(10) unsigned |
| title      | varchar(255)     |
| content    | longtext         |


POST_METAS
+------------+------------------+
| Field      | Type             |
+------------+------------------+
| id         | int(10) unsigned |
| post_id    | int(10) unsigned |
| key        | varchar(255)     |
| value      | longtext         |

使用简单的一对多关系,我得到这个输出

[
  {
    "id": 1,
    "title": "Dibbert LLC",
    "content": null,
    "post_metas": [
      {
        "key": "code",
        "value": "YSRSLBZ7"
      },
      {
        "key": "agent_id",
        "value": "32"
      }
    ]
  }
]

我想知道是否可以将 post metas 作为对象而不是数组,而不是像这样:

[
  {
    "id": 1,
    "title": "Dibbert LLC",
    "content": null,
    "post_metas": {
        "code": "YSRSLBZ7",
        "agent_id": "32"
      }
  }
]

最佳答案

您无法更改 Eloquent 返回关系集合的方式,也不应该更改,但您当然可以在响应中操作集合:

$model->post_metas->pluck('value', 'key');

阅读所有可用的 collection methods .

关于php - Laravel Eloquent 在单个键值对中获取所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53107934/

相关文章:

php - Laravel 5 使用销毁方法删除现有文章

orm - Laravel Eloquent,返回带有 "belongsTo"对象的 JSON?

laravel - Laravel v6 中未知的命名参数 $store 错误

mysql - 使用 group by 和 Laravel 获取最新行

php - 在 WHERE 中应用 OR 子句或在 Eloquent laravel 中应用 HAVING

php - Laravel 的递归 ->toArray()

php - select 语句中有 4 个 'ands'

php - mysql select语句的问题

php - 在 php 中从 SQL 列添加整数

php - 使用 preg_replace 检查多个模式?