【问题标题】:How to return pivot data of a many-to-many relationship?如何返回多对多关系的数据透视?
【发布时间】:2017-07-11 13:59:04
【问题描述】:

如何为id=2 的用户角色选择数据透视数据(col1col2)?

+------------+
|    User    |
+------------+
| id | name  |
+----+-------+
| 1  | John  |
+----+-------+
| 2  | Brian |
+----+-------+

+------------+
|    Role    |
+------------+
| id | title |
+----+-------+
| 1  | Admin |
+----+-------+
| 2  | Owner |
+----+-------+

+-----------------------------------+
|              UserRole             |
+-----------------------------------+
| user_id | role_id |  col1 |  col2 |
+---------+---------+-------+-------+
|    2    |    1    | lorem | dolor |
+---------+---------+-------+-------+
|    2    |    2    | ipsum |  amet |
+---------+---------+-------+-------+

我可以使用User::find(2)->roles,但它会返回:

[
  {
    "id": 1,
    "title": "Admin",
    "pivot": {
      "user_id": 2,
      "role_id": 1,
      "col1": "lorem",
      "col2": "dolor"
    }
  },
  {
    "id": 2,
    "name": "Owner",
    "pivot": {
      "user_id": 2,
      "role_id": 2,
      "col1": "ipsum",
      "col2": "amet"
    }
  }
]

如何将查询更改为仅具有以下结果(仅透视数据):

[
  {
    "user_id": 2,
    "role_id": 1,
    "col1": "lorem",
    "col2": "dolor"
  },
  {
    "user_id": 2,
    "role_id": 2,
    "col1": "ipsum",
    "col2": "amet"
  }
]

【问题讨论】:

    标签: mysql laravel eloquent octobercms laravel-eloquent


    【解决方案1】:

    您可以使用pluck() 来实现此目的。

    https://laravel.com/docs/5.3/collections#method-pluck

    User::find(2)->roles->pluck('pivot');
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2023-02-05
      • 2018-09-23
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      • 2021-09-25
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多