我希望获得与某个对话相关的所有用户。数据透视表包含user_id
和conversation_id
列。 user_id
和conversation_id
分别引用了用户和会话表中的id
列。
所以我做了:
Conversations::find($conv_id)->users()
这没关系,但它会返回相关用户的所有详细信息。根据上面的代码,如何仅返回用户的某些列,例如id
和name
?
P.S。另外,我知道我可以通过为数据透视表创建一个模态来实现这一点,但它看起来像是一种矫枉过正。为数据透视表创建模态是一个好习惯吗?
我试过
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..
感谢您的时间。
答案 0 :(得分:5)
当您从两个包含名为id
的字段的表中选择数据时,您会收到Column 'id' in field list is ambiguous...
错误的原因。
如果您再次尝试使用相同的查询,但在id
表单中使用点表示法定义要选择的table.field
,则应该有效。
Conversations::find($conv_id)->users()->get(array('users.id','name'))->toArray();