Laravel 4:如何在多对多关系中获取选定/特定列?

时间:2014-07-11 03:20:46

标签: php mysql laravel laravel-4 eloquent

我希望获得与某个对话相关的所有用户。数据透视表包含user_idconversation_id列。 user_idconversation_id分别引用了用户和会话表中的id列。

所以我做了:

Conversations::find($conv_id)->users()

这没关系,但它会返回相关用户的所有详细信息。根据上面的代码,如何仅返回用户的某些列,例如idname

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.. 

感谢您的时间。

1 个答案:

答案 0 :(得分:5)

当您从两个包含名为id的字段的表中选择数据时,您会收到Column 'id' in field list is ambiguous...错误的原因。

如果您再次尝试使用相同的查询,但在id表单中使用点表示法定义要选择的table.field,则应该有效。

Conversations::find($conv_id)->users()->get(array('users.id','name'))->toArray();