我想获取与特定对话相关的所有用户。数据透视表有 user_id
和 conversation_id
列。 user_id
和 conversation_id
分别引用 user 和 conversations 表中的 id
列。
所以我做到了:
Conversations::find($conv_id)->users()
这没问题,但它会返回相关用户的所有详细信息。根据上面的代码,如何只返回用户的某些列,例如 id
和 name
?
附言此外,我知道我可以通过为数据透视表创建一个模式来做到这一点,但这似乎有点矫枉过正。为数据透视表创建模式是一种好习惯吗?
我试过了
Conversations::select('id','name')->find($conv_id)->users()->get()->toArray();
但结果还是一样。
我也试过
Conversations::find($conv_id)->users()->get(array('id','name'))->toArray();
但它给出了错误:
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in field list is ambiguous..
感谢您的宝贵时间。
最佳答案
当您从两个表中选择数据时,这两个表都包含一个名为 id
的字段,因此您收到字段列表中的 Column 'id' 的原因是不明确的...
错误。
如果您再次尝试相同的查询,但使用 table.field
形式的点符号定义您希望选择的 id
,它应该可以工作。
Conversations::find($conv_id)->users()->get(array('users.id','name'))->toArray();
关于php - 拉维尔 4 : How to get selected/specific columns in a many to many relationship?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24689563/