php - 拉维尔 4 : How to get selected/specific columns in a many to many relationship?

标签 php mysql laravel laravel-4 eloquent

我想获取与特定对话相关的所有用户。数据透视表有 user_idconversation_id 列。 user_idconversation_id 分别引用 user 和 conversations 表中的 id 列。

所以我做到了:

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

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

附言此外,我知道我可以通过为数据透视表创建一个模式来做到这一点,但这似乎有点矫枉过正。为数据透视表创建模式是一种好习惯吗?

我试过了

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/

相关文章:

php - 获取不是组成员的用户的逻辑

laravel - 在 Laravel 模型中定义表名

php - laravel Eloquent 一对多关系返回null

javascript - 在 Ajax 中测试 PHP 响应

php - 使用 Swift Mailer、GMail 和 PHP 发送电子邮件,权限被拒绝错误

mysql - 从 table2 中的外键约束中删除在 table1 中具有主键的记录

php - CakePHP:表名和其他限制是什么

php - Jquery 使用 PHP 和 MySQL 根据一个字段自动补全两个字段

php - PostgreSQL: 未定义函数 array_agg(enumlabel)

php - MySQL:理解sql代码